You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server查询存储JSON数组的nvarchar列无结果,求正确方法

解决SQL Server中JSON数组列的查询问题

你的Col1列存储的是JSON数组(外层有[]包裹),而非单个JSON对象,这就是原查询语句无结果的核心原因。JSON_VALUE的路径$.value.id仅针对单个JSON对象生效,对数组不适用。

方法1:指定数组索引查询(适合数组仅含单个元素的场景)

直接在JSON路径中添加数组索引(数组索引从0开始),修改后的查询语句如下:

SELECT *
FROM Tbl1
WHERE JSON_VALUE(Col1, '$[0].value.id') = '123'
  AND JSON_VALUE(Col1, '$[0].type') = 'Animal'

方法2:用OPENJSON展开数组查询(适合数组含多个元素的场景)

如果数组中可能包含多个对象,想要匹配数组内任意一个符合条件的对象,可通过OPENJSON将JSON数组展开为行,再关联查询:

SELECT t.*
FROM Tbl1 t
CROSS APPLY OPENJSON(t.Col1)
WITH (
    value_id NVARCHAR(50) '$.value.id',
    type NVARCHAR(50) '$.type'
) j
WHERE j.value_id = '123' AND j.type = 'Animal'

另外需要说明:SQL Server不支持Col1.value.id = '123'这类简化的JSON查询语法,必须通过JSON_VALUE、OPENJSON等专门的JSON函数处理JSON格式的数据。

内容的提问来源于stack exchange,提问作者user989988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:14:55