在SQL Server的FOR JSON PATH中转义属性名里的点号可行吗?
SQL Server FOR JSON PATH 保留属性名中的点号
在SQL Server的FOR JSON PATH中,默认会把别名里的点号解析为嵌套JSON的层级分隔符,导致属性被拆分成嵌套结构。要让属性名保留点号,需要用双引号包裹属性名别名,再在外层加方括号。
修改后的查询语句如下:
SELECT A.tag AS ["@odata.etag"] ,A.val AS [val] FROM (VALUES('1111', 2222))A(tag,val) FOR JSON PATH
执行后会得到你期望的输出:
[ { "@odata.etag": "1111", "val": 2222 } ]
原理是:当别名用双引号包裹时,SQL Server会将整个字符串识别为单一的属性名称,不再将点号视为嵌套层级的分隔符,从而直接生成带点号的属性名。
内容的提问来源于stack exchange,提问作者chase huber
相关产品推荐
相关产品推荐

