我想从表中的数据创建 json。
表格看起来像这样:
|code |
+------+
|D5ABX0|
|MKT536|
|WAEX44|
我正在使用 FOR JSON PATH,这很好:
SELECT [code]
FROM feature
FOR JSON PATH
但是这个查询的返回值是三个串联的 json:
|JSON_F52E2B61-18A1-11d1-B105-00805F49916B |
+----------------------------------------------------------+
1 |[{"code":"D5ABX0"},{"code":"MKT536"},{"code":"WAEX44"}]|
我需要让每一行都是一个单独的 json,如下所示:
|JSON_return |
+---------------------+
1 |{"code":"D5ABX0"} |
2 |{"code":"MKT536"} |
3 |{"code":"WAEX44"} |
我试图使用分割函数(CROSS APPLY),它需要一个分隔符作为参数,但这不是一个可靠的解决方案,因为 json 可以进一步扩展或分支,这可能不会分隔整个 json,而是分隔 json 内的 json :
;WITH split AS (
SELECT [json] = (SELECT code FROM feature FOR JSON PATH)
)
SELECT
T.StringElement
FROM split S
CROSS APPLY dbo.fnSplitDelimitedList([json], '},{') T
输出是:
|StringElement |
+---------------------+
1 |[{"code":"D5ABX0" |
2 |"code":"MKT536" |
3 |"code":"WAEX44"}] |
有没有办法强制 sqlserver 每行创建一个 json?