SQL,如果碰到Json,你会怎么做?

1、Json串如下:

DECLARE @JsonInfo NVARCHAR(2000)
SET @JsonInfo=N'
                {
                    "CalcPayInput":{
                        "ServiceCode":"2131296",
                        "Items":[
                            {
                                "Length":10,
                                "Width":50,
                                "High":80
                            }
                        ]
                    },
                    "BusinessBody":{
                        "WaybillNumber":"SZY222019082001135"
                    }
                }
                '  
SELECT Len(@JsonInfo)


/*实际存储建议使用这种,压缩一行保存*/
SET @JsonInfo=N'{"CalcPayInput":{"ServiceCode":"2131296","Items":[{"Length":10,"Width":50,"High":80}]},"BusinessBody":{"WaybillNumber":"SZY222019082001135"}}'  
SELECT Len(@JsonInfo)

2、获取json串的ServiceCode字段的值

注意:SQL SERVER 2016 版本以后的支持(旧版本需要升级) 解析Json之前验证一下是否是Json语句select ISJSON(@JsonInfo) 如果字符串包含有效 JSON,则返回 1;否则,返回 0。 如果 expression 为 NULL,则返回 NULL。

SELECT JSON_VALUE(@JsonInfo,'$.CalcPayInput.ServiceCode')ServiceCode

3、获取json串的Length字段的值

注意:层级关系,Items是集合,获取集合的第一项,[0],索引从0开始

SELECT JSON_VALUE(@JsonInfo,'$.CalcPayInput.Items[0].Length') Length

4、获取json串的WaybillNumber字段的值

注意:Json串第一层存在多个子对象

SELECT JSON_VALUE(@JsonInfo,'$.BusinessBody.WaybillNumber') WaybillNumber

5、修改json串的WaybillNumber字段的值为YZY222019082001135

注意:Json串第一层存在多个子对象

 SELECT JSON_MODIFY(@JsonInfo, '$.BusinessBody.WaybillNumber','YZY222019082001135') JsonInfo

6、去除json串的WaybillNumber字段

注意:将不需要的字段定位到,利用JSON_MODIFY函数置为NULL

SELECT JSON_MODIFY(@JsonInfo, '$.BusinessBody.WaybillNumber',null) JsonInfo

7、添加json串的ProductCode字段

注意:将不需要的字段定位到,利用JSON_MODIFY函数添加

SELECT JSON_MODIFY(@JsonInfo, '$.BusinessBody.ProductCode','256354') JsonInfo

8、参考文档

https://docs.microsoft.com/zh-cn/sql/t-sql/functions/isjson-transact-sql?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/json-value-transact-sql?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/json-query-transact-sql?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/json-modify-transact-sql?view=sql-server-2017
微信:13722885914 查看我的相册 
简书:https://www.jianshu.com/u/dbfbe12c187d 
欢迎大家加我,咨询问题,尽我的能力解决,我知道的问题。

猜你喜欢

转载自www.cnblogs.com/zhanfuzhi/p/zhan3.html
今日推荐