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

在SELECT语句中使用OPENJSON提取JSON字段的技术咨询

提取JSON字段并筛选数据的SQL解决方案

你的表结构及数据如下:

Id   Details                            Price
----------------------------------------------
1   {"partNumber":"012345","qty":14}    14.99
2   {"partNumber":"22222","qty":11}      4.88
3   {"partNumber":"44444","qty":1}       3.24
4   {"partNumber":"72431223","qty":9}    3.33
5   {"partNumber":"98989","qty":1}       3.33

需求是返回partNumber和Price字段,筛选Price < 10.00的数据。你之前尝试的SQL语法有误,以下是两种可行的解决方案:

方案一:用JSON_VALUE直接提取单个字段

这种方法简单直接,适合只需要提取少量JSON属性的场景:

SELECT
    JSON_VALUE(Details, '$.partNumber') AS partNumber,
    Price
FROM
    tableName
WHERE
    Price < 10.00

JSON_VALUE函数通过JSON路径$.partNumber直接从Details字段中取出partNumber的值。

方案二:用OPENJSON解析JSON(适合多字段提取)

如果需要从JSON中提取多个属性,用OPENJSON结合CROSS APPLY更灵活:

SELECT
    j.partNumber,
    t.Price
FROM
    tableName t
CROSS APPLY OPENJSON(t.Details)
WITH (
    partNumber NVARCHAR(50) '$.partNumber'
) j
WHERE
    t.Price < 10.00

这里用CROSS APPLY把JSON字符串解析成结构化的行集,WITH子句定义要提取的字段名、类型和对应的JSON路径。

你之前的SQL错误在于FROM子句的写法,不能直接在表名后嵌套子查询,必须用APPLY类操作符关联OPENJSON的解析结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:04:53