SQL中如何用运算符筛选JSON字段数据?
解决方案
针对你提到的两个筛选场景,直接在WHERE子句中使用JSON_VALUE函数提取JSON字段内的值,再添加对应筛选条件即可,具体实现如下:
场景1:筛选AdNumber不为空的Key
通过JSON_VALUE从NativeObject中提取AdNumber字段,判断其不为空字符串:
SELECT Key, NativeObject FROM dbo.UserResource WHERE JSON_VALUE(NativeObject, '$.AdNumber') <> ''
场景2:筛选NativeID大于等于指定数值(如3000)的记录
注意NativeID在JSON中是字符串类型,需要先转换为数值类型再做比较:
SELECT Key, NativeObject, JSON_VALUE(NativeObject, '$.NativeID') AS NativeID FROM dbo.UserResource WHERE CAST(JSON_VALUE(NativeObject, '$.NativeID') AS INT) >= 3000
补充说明
你之前在SELECT子句中使用JSON_VALUE的写法是正确的,但筛选逻辑需要放在WHERE子句中生效。如果需要同时组合多个筛选条件,直接用AND/OR关联即可。
内容的提问来源于stack exchange,提问作者rulans
相关产品推荐
相关产品推荐

