使用逗号分隔值格式化 JSON

问题描述 投票:0回答:1

表1:采购量

客户端ID 商品ID
1234 1,2
5678 3,4
create table Purchases (ClientId int, ItemId varchar(128));

insert into Purchases (ClientId, ItemId)
values
(1234, '1,2'),
(5678, '3,4');

Declare @newtable table(
    clientid NVARCHAR(MAX),
    itemid NVARCHAR(MAX),
    json NVARCHAR(MAX)
);

insert into @newtable
select [ClientID], [ItemID],'{}'
From Purchases;

Update @newtable
Set Json = JSON_MODIFY (Json, '$.ItemID', [ItemID]);

select * from @newtable;

我尝试使用

Json_modify
,我得到了
{ "ItemID": "1,2"}
客户端 ID 1234,但我希望 JSON 输出为
{ "ItemID": [ "1", "2" ]}

我期待以下内容

客户端ID 商品ID 杰森
1234 1,2 { "ItemID": [ "1", "2" ]}
5678 3,4 { "ItemID": [ "3", "4" ]}
sql sql-server
1个回答
0
投票

您可以通过替换并连接来强制执行此操作。

SELECT
    P.*,
    CONCAT(
       '{ "ItemID": [ "',
       REPLACE(STRING_ESCAPE(P.ItemId, 'json'), ',', '", "'),
       '" ]}'
       ) AS Json
FROM Purchases P

结果:

客户端ID 商品编号 杰森
1234 1,2 { "ItemID": [ "1", "2" ]}
5678 3,4 { "ItemID": [ "3", "4" ]}

请参阅 this db<>fiddle 进行演示。

© www.soinside.com 2019 - 2024. All rights reserved.