SQL Server查询空JSON列时出现JSON格式错误的问题求助
解决SQL Server JSON_QUERY解析空字符串报错问题
问题根源在于JSON_QUERY函数要求输入必须是合法JSON格式,但当Cuestionario为空字符串时,它不属于有效JSON范畴,因此触发13609错误。
可以通过先判断字段有效性再针对性处理来解决,以下是两种实用方案:
方案1:空字符串返回JSON格式的null
用CASE结合ISJSON函数做判断,当字段为空或无效时返回JSON null,否则正常解析:
select TOP 1 UserId, Fecha, Calificacion, CASE WHEN Cuestionario = '' OR ISJSON(Cuestionario) = 0 THEN JSON_QUERY('null') ELSE JSON_QUERY(Cuestionario) END Cuestionario, Comentarios, [Application] from AppScores where UserId = '00000000-0000-0000-0000-000000000000' order by Fecha desc for json path, WITHOUT_ARRAY_WRAPPER
方案2:空字符串返回空数组
如果希望空评价时返回空数组[]而非null,只需替换对应返回值:
select TOP 1 UserId, Fecha, Calificacion, CASE WHEN Cuestionario = '' OR ISJSON(Cuestionario) = 0 THEN JSON_QUERY('[]') ELSE JSON_QUERY(Cuestionario) END Cuestionario, Comentarios, [Application] from AppScores where UserId = '00000000-0000-0000-0000-000000000000' order by Fecha desc for json path, WITHOUT_ARRAY_WRAPPER
原理说明
ISJSON(Cuestionario) = 0可识别空字符串、格式错误的JSON等无效值JSON_QUERY('null')/JSON_QUERY('[]')生成合法JSON值,保证最终输出的JSON结构完整,避免解析报错
内容的提问来源于stack exchange,提问作者Rodrigo Jimenez
相关产品推荐
相关产品推荐

