json - 使用 JSON_VALUE 返回包含 \n 作为换行符的 JSON 值
问题描述
考虑 Microsoft SQL Server 中的以下 T-SQL:
SELECT JSON_VALUE ('{"Value": "Normal Text 304\n1212\n1212\n121\na"}', '$.Value')
执行此操作时,\n
将数据转换为 ASCII 10(换行符),并返回以下内容:
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
,因为 JSON 无效,因为它包含 ASCII 代码10
。
我将不胜感激有关如何从 JSON 结构中获取 JSON 格式的字符串值以粘贴到另一个 JSON 结构中的任何建议?
我可以从 ASCII 码转换10
回,\n
但这不是一个理想的解决方案。
解决方案
如果您使用 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_MODIFY()
如果值的类型是 NVARCHAR 或 VARCHAR,则 ...转义新值中的所有特殊字符。
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"}
推荐阅读
- java - 我的 break 语句似乎没有正常工作,执行后它仍然循环一次
- java - 在 docker 容器中启动项目时找不到 io.jsonwebtoken.impl.DefaultJwtBuilder
- python - 如何从我的库存计划中导出/导入数据?
- r - 在 R 中编码条件期望
- apache-pig - 如何获得 Apache pig 中两个 COUNT() 操作的差异?
- java - 无法在 Dialogflow 模拟器中显示响应。请改为在 Google Assistant 模拟器上进行测试
- r - R Studio:一次选择和计算多列
- java - Java8流collectors.ToMap方法引用失败
- javascript - window.close 不适用于 Twitter 网站
- python - 按多个对象分页django