gpt4 book ai didi

sql - 从表列名和数据创建json键值

转载 作者:行者123 更新时间:2023-12-04 08:24:07 28 4
gpt4 key购买 nike

是否可以从表中创建 JSON 键值 SELECT语句,其中列名作为键,列值作为值

declare @T table(Id int, ItemName varchar(10), CategoryId int, ItemDate date)
insert into @T
values(1,'ABC',100, '1/1/2020')
返回如下内容
{
"id": 1,
"table": "tableName",
"data": [{
"key": "ItemName",
"value": "ABC"
},
{
"key": "CategoryId",
"value": "100"
},
{
"key": "ItemDate",
"value": "1/1/2020"
}
]
}
我看过选择为 JSON 但卡在这里
select *
from @T
for json auto

最佳答案

您可以尝试使用 VALUES表值构造函数和 FOR JSON AUTO .照原样 mentioned在文档中,当...指定 AUTO 选项时,JSON 输出的格式将根据 SELECT 列表中的列顺序及其源表自动确定。
table :

CREATE TABLE Tbl (
Id int,
ItemName varchar(10),
CategoryId int,
ItemDate date
)
INSERT INTO Tbl
VALUES
(1, 'ABC', 100, '1/1/2020'),
(2, 'DEF', 200, '2/2/2020')
陈述:
SELECT t.Id, data.[key], data.[value]
FROM Tbl t
CROSS APPLY (VALUES
('ItemName', CONVERT(varchar(max), ItemName)),
('CategoryId', CONVERT(varchar(max), CategoryId)),
('ItemDate', CONVERT(varchar(max), ItemDate))
) Data ([key], [value])
FOR JSON AUTO
结果:
[
{
"Id":1,
"Data":[
{"key":"ItemName", "value":"ABC"},
{"key":"CategoryId","value":"100"},
{"key":"ItemDate","value":"2020-01-01"}
]
},
{
"Id":2,
"Data":[
{"key":"ItemName", "value":"DEF"},
{"key":"CategoryId", "value":"200"},
{"key":"ItemDate", "value":"2020-02-02"}
]
}
]
作为附加选项,您可以尝试为每一行构建内部 JSON:
SELECT 
Id,
(
SELECT [key], [value]
FROM (VALUES
('ItemName', CONVERT(varchar(max), ItemName)),
('CategoryId', CONVERT(varchar(max), CategoryId)),
('ItemDate', CONVERT(varchar(max), ItemDate))
) v ([key], [value])
FOR JSON PATH
) AS Data
FROM Tbl
FOR JSON AUTO

关于sql - 从表列名和数据创建json键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65354156/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com