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

SQL Server中如何从JSON数组提取值用于WHERE子句查询

问题解答

你的这个查询语句不能实现预期效果,原因很简单:
JSON_VALUE(Availability, '$.Availability') 会返回整个数组的字符串形式(比如John对应的返回值是[1, 3, 6]),直接和数字3做相等判断显然不成立,所以查不到任何结果。

下面给你两种可行的解决方案:

方法1:使用OPENJSON展开数组筛选

通过CROSS APPLY OPENJSON把JSON数组拆分成单独的行,再筛选包含目标日期的记录,最后去重得到玩家列表:

SELECT DISTINCT Player
FROM TableName
CROSS APPLY OPENJSON(Availability, '$.Availability') AS AvailDates
WHERE CAST(AvailDates.value AS INT) = 3;

这里把value转成INT是因为OPENJSON默认返回字符串类型,确保和数字3的类型匹配。

方法2:使用JSON_CONTAINS直接判断(更简洁)

SQL Server 2016及以上版本支持JSON_CONTAINS函数,可以直接检查JSON数组中是否包含指定值:

SELECT Player
FROM TableName
WHERE JSON_CONTAINS(Availability, '3', '$.Availability');

注意第二个参数要写成JSON格式的字符串('3'),第三个参数指定要检查的数组路径$.Availability。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:37:31