我有兩個 SQL 變數@item1和@item2,它們的值"abc,def"分別"ghi,jkl"為 。
我有一張這樣的桌子:
--------------------
Id | item1 | item2 |
--------------------
我想要的結果是:
--------------------
Id | item1 | item2 |
--------------------
1 | abc | ghi |
--------------------
2 | def | jkl |
--------------------
我曾嘗試splitstring在 SQL Server 中使用該函式,但在這種情況下不起作用。
我試過的
Insert into table (item1,item2)
(Select * from Splitstring (@item1,',')),
(Select * from Splitstring (@item2, ','))
uj5u.com熱心網友回復:
從 SQL Server 2016 開始,基于 JSON 的方法是一種可能的選擇。這個想法是將輸入文本值轉換為有效的 JSON 陣列 ( abc,definto ["abc","def"]) 并使用 決議該陣列OPENJSON()。結果是一個包含列的表key,value并且type該key列包含已決議陣列中每個專案的從 0 開始的索引。
DECLARE @item1 varchar(max) = 'abc,def'
DECLARE @item2 varchar(max) = 'ghi,jkl'
INSERT INTO [Table] (item1, item2)
SELECT j1.[value], j2.[value]
FROM OPENJSON(CONCAT('["', REPLACE(@item1, ',', '","'), '"]')) j1
FULL OUTER JOIN OPENJSON(CONCAT('["', REPLACE(@item2, ',', '","'), '"]')) j2
ON j1.[key] = j2.[key]
請注意,從 SQL Server 2022 開始,您可以使用SRING_SPLIT()withenable_ordinal引數來獲得相同的結果:
INSERT INTO [Table] (item1, item2)
SELECT s1.[value], s2.[value]
FROM STRING_SPLIT(@item1, ',', 1) s1
FULL OUTER JOIN STRING_SPLIT(@item1, ',', 1) s2
ON s1.[ordinal] = s2.[ordinal]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/533822.html
標籤:数据库sql服务器
