SQL Server中JSON_VALUE提取值时\n转义为换行符的解决方案问询
方案1:使用FOR JSON自动生成合法JSON(推荐)
完全不需要手动拼接JSON字符串,SQL Server原生的FOR JSON语法会自动处理所有特殊字符的转义,兼容所有JSON格式要求:
SELECT ( SELECT JSON_VALUE('{"Value": "Normal Text 304\n1212\n1212\n121\na"}', '$.Value') AS [New Value] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER ) AS GeneratedJson
执行后返回的结果就是合法的JSON结构,ISJSON校验返回1,内部的换行符会自动转义为\n。
方案2:用STRING_ESCAPE手动转义后拼接
如果确实需要单独提取转义后的字符串使用,可以用SQL Server自带的STRING_ESCAPE函数,指定转义规则为json即可覆盖所有JSON要求转义的特殊字符(包括换行、制表符、双引号、反斜杠等,比手动替换单种字符更全面):
-- 先拿到解析后的原始值 DECLARE @OriginalValue NVARCHAR(MAX) = JSON_VALUE('{"Value": "Normal Text 304\n1212\n1212\n121\na"}', '$.Value'); -- 转义为符合JSON格式要求的字符串 DECLARE @JsonEscapedValue NVARCHAR(MAX) = STRING_ESCAPE(@OriginalValue, 'json'); -- 拼接后校验JSON合法性,返回1 SELECT ISJSON('{"New Value": "' + @JsonEscapedValue + '"}') AS IsValidJson
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

