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

SQL查询JSON字段报错:添加JSON_VALUE条件后提示格式错误

错误原因及解决方案

错误原因

SQL Server的查询优化器不会严格按照WHERE子句中条件的书写顺序执行判断。即便你写了ISJSON(code_data)=1来筛选合法JSON记录,优化器仍可能优先执行JSON_VALUE(code_data,'$.subscriptionID') = 'I-AMJM4M6AX3RP'这个条件。此时,那些code_data字段不是合法JSON格式的记录(比如开头为字符'1'的内容)会被JSON_VALUE函数处理,直接触发"JSON文本格式不正确"的报错。

解决方案

方案1:用子查询/CTE预先过滤合法JSON

先通过公用表表达式(CTE)筛选出所有合法的JSON记录,再针对这些记录做JSON_VALUE的条件判断:

WITH ValidJsonCTE AS (
    SELECT code_data
    FROM code_table
    WHERE code_group = 'pptoken'
      AND code_data LIKE '{%'
      AND ISJSON(code_data) = 1
)
SELECT code_data
FROM ValidJsonCTE
WHERE JSON_VALUE(code_data, '$.subscriptionID') = 'I-AMJM4M6AX3RP'

方案2:用CASE表达式强制执行顺序

通过CASE表达式确保只有合法JSON才会进入JSON_VALUE函数处理:

SELECT code_data
FROM code_table
WHERE code_group = 'pptoken'
  AND code_data LIKE '{%'
  AND ISJSON(code_data) = 1
  AND CASE 
        WHEN ISJSON(code_data) = 1 THEN JSON_VALUE(code_data, '$.subscriptionID')
        ELSE ''
      END = 'I-AMJM4M6AX3RP'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:52:44