JSON中的MSSQL搜索

JSON中的MSSQL搜索,sql,sql-server,Sql,Sql Server,如何在SQL server中过滤json文件 我有一个专栏电话 {"test","source":"web"} 我想按来源过滤 我所做的: select * from TABLE_NAME CROSS APPLY OPENJSON(details,'$.source') where value ='web' 根据Zohar的评论,使您的json有效,然后类似于: --{"mode":"test","source":"web"} select * from TABLE_NAME CRO

如何在SQL server中过滤json文件

我有一个专栏电话

{"test","source":"web"}
我想按来源过滤

我所做的:

select * from TABLE_NAME 
CROSS APPLY OPENJSON(details,'$.source')
where value ='web'

根据Zohar的评论,使您的json有效,然后类似于:

--{"mode":"test","source":"web"}


select * from TABLE_NAME 
CROSS APPLY 
  OPENJSON(details)
  WITH (   
    m varchar(256) '$.mode',
    s varchar(256) '$.source'
  ) j
where
  j.w = 'web'
但只使用JSON_值可能更适合/更简单:

select * from TABLE_NAME
WHERE json_value(details, '$.source') = 'web' 
如果希望将每一行的json转换为类似WITH子句中的表规范的伪表,请使用交叉应用OPENJSON。SQLServer的行为就像是将每行json中所有匹配的“行”合成到psseudotable中,并根据每一组json伪行的来源自动连接到源数据表


如果您真的只需要JSON中的一个值,并且可以唯一地标识JSON中要从中获取值的单个“行”,请使用JSON_值。。json只有一个“行”/“不是集合”,或者您希望json集合中的“行”可以根据公式引用

您需要有效的json才能使用OPENJSON。您的JSON无效。