SqlServer 2016 中查询JSON 数据
JSON存储
在sqlserver 中存储json ,需要用字符串类型进行存储,一般用nvarchar() 进行存储,不要用text进行存储,用text时候,json的函数不支持。
表数据:
JSON_VALUE 查询
官方文档:https://docs.microsoft.com/en-us/sql/t-sql/functions/json-value-transact-sql?view=sql-server-ver15
SELECT [shift_name] , [test_result] FROM [vSkyQMS].[dbo].[test] WHERE JSON_VALUE([test_result], '$.ShiftDate') like '%2%'
查询结果:
它无法直接对,一开始是数组形式的JSON 继续过滤,也有可能是我没知道方法。欢迎在下面留言。但是它可以对JSON里面如果包含数组类型进行过滤,也就是可以$.names[1].value 这样形式。并且对于大于4000的字符串不建议使用。
JSON_OPTION
SELECT shift_name, shiftInfo.ShiftDate, test_result FROM test CROSS APPLY OPENJSON (test.test_result) WITH ( ShiftDate NVARCHAR (200) N'$.ShiftDate' ) AS shiftInfo WHERE shiftInfo.ShiftDate='222'
查询结果:
对一开始是数组的json采用OPENJSON()WITH()进行查询。发现都可以查询出来。
其它使用可以参考其它博主的文章:https://www.cnblogs.com/wsasdfgasdfg/p/12658522.html
作者:whitebbai
个性签名:古之成大事者,不惟有超世之才,亦必有坚韧不拔之志
三省吾身:自古盘古开天,三皇定国,五帝开疆,凡国遇大事,男必在祀与戎,
泯躯祭国,即燹骨成丘,溢血成河,亦不可辱国之土,丧国之疆,
士披肝沥胆,将寄身刀锋,帅槊血满袖,王利刃辉光, 吾不分老幼尊卑,
不分先后贵贱,必同心竭力,倾黄河之水,决东海之波,征胡虏之地,剿倭奴之穴,
讨欺吾之寇,伐蛮夷之戮,遂沧海横流,儿立身无愧,任尸覆边野,唯精魂可依。
泯躯祭国,即燹骨成丘,溢血成河,亦不可辱国之土,丧国之疆,
士披肝沥胆,将寄身刀锋,帅槊血满袖,王利刃辉光, 吾不分老幼尊卑,
不分先后贵贱,必同心竭力,倾黄河之水,决东海之波,征胡虏之地,剿倭奴之穴,
讨欺吾之寇,伐蛮夷之戮,遂沧海横流,儿立身无愧,任尸覆边野,唯精魂可依。