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

如何使用OPENJSON筛选数据库表中qty小于10的记录

筛选JSON字段中qty小于10的SQL语句修改方案

原表结构及数据

数据库表中Details字段为JSON格式,表结构和数据如下:

IdDetailsPrice
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

原有筛选qty等于1的SQL语句

select * from tableName where ('1') IN (select qty from OPENJSON(tableName.Details) WITH ( [qty]  NVARCHAR(20) '$.qty'))

修改后筛选qty小于10的SQL语句

要筛选qty小于10的记录(返回Id为3、4、5的条目),可以直接通过OPENJSON解析后做数值比较,推荐两种严谨的写法:

写法一:解析后转换数值类型

select * 
from tableName 
where (select CAST(qty AS INT) from OPENJSON(tableName.Details) WITH ( [qty] NVARCHAR(20) '$.qty')) < 10

写法二:解析时直接指定数值类型(更高效)

select * 
from tableName 
where (select qty from OPENJSON(tableName.Details) WITH ( [qty] INT '$.qty')) < 10

两种写法都能正确筛选出目标记录,第二种写法在JSON解析阶段就将qty定义为INT类型,避免了字符串比较的潜在问题,执行效率更高。

内容的提问来源于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