zoukankan      html  css  js  c++  java
  • SQL存储实现将JSON自动转化成SQL数据列

    CREATE PROCEDURE sp_GetJsonFields
        (
           @Json VARCHAR(MAX)
        )
        
        AS
        BEGIN
        SELECT @Json=REPLACE(@Json,'{','')
        SELECT @Json=REPLACE(@Json,'}',',')
        DECLARE @temp VARCHAR(MAX)
        DECLARE @objName VARCHAR(4000)
        DECLARE @objValue VARCHAR(4000)
        DECLARE @fieldSql VARCHAR(MAX)
        SET @fieldSql='select '
    
        WHILE LEN(@Json)>0 --LEN 函数返回文本字段中值的长度
        BEGIN
        --通过CHARINDEX如果能够找到对应的字符串,则返回该字符串位置,否则返回0
        SELECT @temp=SUBSTRING(@Json,0,CHARINDEX(',',@Json,0))--截取到该逗号的位置字符串
        --
        SELECT @Json=RIGHT(@Json,LEN(@Json)-LEN(@temp)-1)--再获取右边字符串信息
    
        ---取对象字段名称信息
        set @objName =left(@temp,CHARINDEX(':',@temp,0)-1)
        --取对象字段名称对应的值
        set @objValue =right(@temp,len(@temp)-CHARINDEX(':',@temp,0))
        
        --PRINT  @objName+'='+ @objValue+';'
        --替换""字符为''
        set @fieldSql=@fieldSql+REPLACE(@objValue,'"','''')+' as '+REPLACE(@objName,'"','')+','
        END
        SET @fieldSql=LEFT(@fieldSql,LEN(@fieldSql)-1)
        --EXEC sp_executesql @fieldSql
        EXEC (@fieldSql)
        END
        GO
    
        EXEC sp_GetJsonFields @json=
        '{"CarGid":"835A38CC-3D19-4123-AB7A-9AFC9704818A","CarQty":1,
        "CarPrice":300000.00,"ShopGid":"835A38CC-6D19-4323-AB7A-6AFC9704765A","ShopName":"全新幻影新能源汽车直售店",
           "CarName":"幻影系能源SL00",
           "CarImage":"http://Carimg.Soft.com/images9f024a01993cc68f89aab295"}'

    抛砖引玉 引荐过来的东西 注意细节方面 就是 存贮的字段值中的json数据中 其它字段值的中间不能有逗号存在不然会引起 查值异常

    譬如:"CarName":"幻影系能源SL00", 不能存在值"CarName":"幻影系能源SL00,全新一代特别奉献版,越野系列",

    生成数据:

  • 相关阅读:
    移动端疫情展示
    第五周学习进度
    第四周学习进度
    结队开发-四则运算
    第三周学习进度
    全球疫情可视化第一阶段
    第二周学习进度
    面试题 02.07. 链表相交 做题小结
    剑指 Offer 35. 复杂链表的复制 做题小结
    LeetCode 452. 用最少数量的箭引爆气球 做题小结
  • 原文地址:https://www.cnblogs.com/Warmsunshine/p/11928901.html
Copyright © 2011-2022 走看看