如何在SQL server的JSON_VALUE输出中保留换行符。
DECLARE @jsonString NVARCHAR(MAX) ='{"name":"jonh","address":"100 st \n city ,country"}'
SELECT JSON_VALUE(@jsonString,'$.address')输出为"100 st city ,country“
但我希望输出为"100 st \n city ,country“
如何保留换行符。
发布于 2019-12-13 03:26:14
转义json中的\:
DECLARE @jsonString NVARCHAR(MAX) ='{"name":"jonh","address":"100 st \\n city ,country"}'
SELECT JSON_VALUE(@jsonString,'$.address')发布于 2019-12-13 03:29:22
它会被保留,只是在表格中显示时SSMS会将其转换为空格。您可以通过转换为varbinary或将SSMS输出更改为文本来检查它:
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))您可以使用SSMS Results to Grid - CRLF not preserved in copy/paste - any better techniques?的解决方案将它们保留在SSMS中。
发布于 2019-12-13 04:23:14
另一种可能的方法是,使用带有'json'的STRING_ESCAPE()作为type参数的值:
声明:
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 ,countryhttps://stackoverflow.com/questions/59311417
复制相似问题