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

SQL Server中JSON数组字段查询无结果,求正确查询方案

SQL Server JSON数组查询无结果的解决方法

你的问题出在item_pieces_list存储的是JSON数组,而JSON_VALUE只能从单个JSON对象中提取属性,直接用$.satuan找不到对应值,所以返回空结果。

正确的查询方式

方式1:拆分数组为多行记录

如果需要把每个数组元素对应的satuan单独作为一行返回,用OPENJSON配合CROSS APPLY拆分数组:

SELECT 
    medicalkes.id, 
    JSON_VALUE(json_item.value, '$.satuan') AS Name
FROM [cisea.bamedika.co.id-hisys].dbo.medicine_alkes AS medicalkes
CROSS APPLY OPENJSON(medicalkes.item_pieces_list) AS json_item

执行后会得到如下结果:

idName
0BOX
0BOX10
1AMPUL
1BOX10

方式2:将同一行的所有satuan合并为字符串

如果需要把同一id下的所有satuan合并成逗号分隔的字符串,可结合STRING_AGG:

SELECT 
    medicalkes.id, 
    STRING_AGG(JSON_VALUE(json_item.value, '$.satuan'), ', ') AS NameList
FROM [cisea.bamedika.co.id-hisys].dbo.medicine_alkes AS medicalkes
CROSS APPLY OPENJSON(medicalkes.item_pieces_list) AS json_item
GROUP BY medicalkes.id

执行结果:

idNameList
0BOX, BOX10
1AMPUL, BOX10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:30:52