我的初始表看起來像這樣(物件的值是動態的,所以它并不總是相同的結構):
id tags
1 {"tag1": "value1"}
2 {"tagA": "valueA", "tagB": "valueB"}
我想把它改成這樣:
id tag value
1 tag1 value1
2 tagA valueA
2 tagB valueB
有人可以幫我轉換嗎?我嘗試像這樣使用 OPENJSON,但它僅在我按 id 過濾時才有效(而且我沒有在結果中獲得 id 列):
DECLARE @json NVARCHAR(MAX)
SET @json = (SELECT tags from auxTagsResources where instanceId = 1)
SELECT \[key\] as tagName, value as tagValue FROM OPENJSON(@json);
結果:
tagName tagValue
tag1 value1
uj5u.com熱心網友回復:
你可以申請json。
create table auxTagsResources ( id int identity primary key, instanceId int not null, tags nvarchar(max) ); insert into auxTagsResources (instanceId, tags) values (1, N'{"tag1": "value1"}') , (1, N'{"tagA": "valueA", "tagB": "valueB"}');
SELECT tag.id, j.[key] as tag, j.[value] FROM auxTagsResources tag CROSS APPLY OPENJSON(tag.tags) j WHERE tag.instanceId = 1
| ID | 標簽 | 價值 |
|---|---|---|
| 1 | 標簽 1 | 值1 |
| 2 | 標簽A | 值A |
| 2 | 標簽B | 值B |
關于db<>fiddle 的演示在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/381502.html
標籤:sql json sql-server 打开-json
