如何在SQL server中保留JSON_值中的新行字符
如何在SQL server的JSON_值输出中保留新行字符如何在SQL server中保留JSON_值中的新行字符,json,sql-server,Json,Sql Server,如何在SQL server的JSON_值输出中保留新行字符 DECLARE @jsonString NVARCHAR(MAX) ='{"name":"jonh","address":"100 st \n city ,country"}' SELECT JSON_VALUE(@jsonString,'$.address') 输出为“100个城市、国家” 但我希望输出为“100 st\n城市、国家” 如何保留新行字符。在json中转义\: DECLARE @jsonString NVARCHAR(
DECLARE @jsonString NVARCHAR(MAX) ='{"name":"jonh","address":"100 st \n city ,country"}'
SELECT JSON_VALUE(@jsonString,'$.address')
输出为“100个城市、国家
”
但我希望输出为“100 st\n城市、国家
”
如何保留新行字符。在json中转义
\
:
DECLARE @jsonString NVARCHAR(MAX) ='{"name":"jonh","address":"100 st \\n city ,country"}'
SELECT JSON_VALUE(@jsonString,'$.address')
它被保留,只是SSMS在表中显示时将其转换为空间。 您可以通过转换为varbinary或将SSMS输出更改为text进行检查:
DECLARE @jsonString NVARCHAR(MAX) ='{"name":"jonh","address":"\n100 st \n city ,country"}'
SELECT JSON_VALUE(@jsonString,'$.address'),cast(JSON_VALUE(@jsonString,'$.address') as varbinary(100))
您可以使用来自的解决方案将它们保留在SSM中。另一种可能的方法,使用
字符串_ESCAPE()
和'json'
作为类型
参数的值:
声明:
DECLARE @jsonString NVARCHAR(MAX) = N'{"name":"jonh","address":"100 st \n city ,country"}'
SELECT STRING_ESCAPE(JSON_VALUE(JSON_QUERY(@jsonString), '$.address'), 'json')
结果:
100 st \n city ,country