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

SQL Server 2017中如何用JSON_VALUE查询JSON列所有Comment值?

解决SQL Server 2017遍历JSON数组所有Comment的查询问题

你原来的写法通过硬编码数组索引([0]、[1])只能匹配前两个元素,要遍历Items数组里的所有Comment,可以用SQL Server的OPENJSON函数展开JSON数组,下面是两种常用方案:

方案一:查询所有包含符合条件Comment的发票记录

如果只需找出存在任意一个Comment包含指定内容的发票,用EXISTS子句结合OPENJSON:

SELECT i.*
FROM invoices i
WHERE EXISTS (
    SELECT 1
    FROM OPENJSON(i.raw_data, '$.Items')
    WITH (
        Comment NVARCHAR(MAX) '$.Comment'
    ) AS items
    WHERE items.Comment LIKE '%9644676%'
)

OPENJSON会把raw_data中的Items数组拆分为多行记录,每条记录对应一个Item元素;通过WITH子句提取出Comment字段后,EXISTS会判断该发票是否存在符合模糊匹配条件的Comment,不管数组里有多少个元素都能覆盖到。

方案二:展示所有匹配的Comment及对应发票信息

如果需要把每个符合条件的Comment和对应的发票信息一起返回,用CROSS APPLY关联OPENJSON的结果:

SELECT i.*, items.Comment
FROM invoices i
CROSS APPLY OPENJSON(i.raw_data, '$.Items')
WITH (
    Comment NVARCHAR(MAX) '$.Comment'
) AS items
WHERE items.Comment LIKE '%9644676%'

这种写法会将每个符合条件的Comment拆分为单独的行,比如某张发票有3个符合条件的Comment,就会返回3条该发票的记录,每条对应一个匹配的Comment。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:12:05