考虑Microsoft SQL Server中的以下T-SQL:
SELECT JSON_VALUE ('{"Value": "Normal Text 304\n1212\n1212\n121\na"}', '$.Value')执行此操作时,\n将在数据中转换为ASCII10(换行符),并返回以下内容:
Normal Text 304 1212 1212 121 a但是,我需要按如下方式返回JSON值,以便将该值注入到另一个JSON结构中。
Normal Text 304\n1212\n1212\n121\na例如:
SELECT
ISJSON ('{"New Value": "' + JSON_VALUE ('{"Value": "Normal Text 304\n1212\n1212\n121\na"}', '$.Value') +'"}')这将返回0,因为它包含ASCII码10,因此无效。
对于如何从JSON结构中获取JSON格式的字符串值以粘贴到另一个JSON结构中,我希望有什么建议?
我可以从ASCII码10转换回\n,但这不是一个理想的解决方案。
发布于 2021-11-16 06:37:47
如果使用SQL Server 2017+,STRING_ESCAPE()是一个选项:
SELECT STRING_ESCAPE(
JSON_VALUE('{"Value": "Normal Text 304\n1212\n1212\n121\na"}', '$.Value'),
'json'
) As EscapedJson结果:
EscapedJson
-----------------------------------
Normal Text 304\n1212\n1212\n121\na您可以使用JSON_MODIFY()修改现有的JSON内容。在这种情况下,正如documentation中所述,如果值的类型是NVARCHAR或VARCHAR,则JSON_MODIFY() ...escapes新值中的所有特殊字符。
SELECT JSON_MODIFY(
'{"Key": "Normal Text"}',
'$."New Value"',
JSON_VALUE('{"Value": "Normal Text 304\n1212\n1212\n121\na"}', '$.Value')
) AS ModifiedJson结果:
ModifiedJson
------------------------------------------------------------------------
{"Key": "Normal Text","New Value":"Normal Text 304\n1212\n1212\n121\na"}https://stackoverflow.com/questions/69983555
复制相似问题