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

       官方文档:https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15  

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

原文地址:https://www.cnblogs.com/whitebai/p/13614024.html