如果你有列/位置的最大數量,也沒有必要去dynamc
我要補充,如果源字符串是在一個表中,這是很容易遷移到CROSS APPLY
實施例
DECLARE @S VARCHAR(MAX);
SET @S='["hi","friends","","","","Bye"]'
Select Pos1 = xDim.value('/x[1]','varchar(max)')
,Pos2 = xDim.value('/x[2]','varchar(max)')
,Pos3 = xDim.value('/x[3]','varchar(max)')
,Pos4 = xDim.value('/x[4]','varchar(max)')
,Pos5 = xDim.value('/x[5]','varchar(max)')
,Pos6 = xDim.value('/x[6]','varchar(max)')
,Pos7 = xDim.value('/x[7]','varchar(max)')
,Pos8 = xDim.value('/x[8]','varchar(max)')
From (Select Cast('<x>' + replace(replace(replace(replace(@S,'"]',''),'["',''),'"',''),',','</x><x>')+'</x>' as xml) as xDim) as A
返回
Pos1 Pos2 Pos3 Pos4 Pos5 Pos6 Pos7 Pos8
hi friends Bye NULL NULL
該表應該是數據庫中的某個列或者您是否試圖將該數據保存到臨時表中。給我更清晰。數組列表可以傳遞字符串格式,然後將其拆分爲proc –
@PrashantBamania感謝您的回答,以及這是一個表到我的數據庫中,所有字段都是varchar。這個想法是,如果我嘗試插入x字段,請在第一列中插入這些字段。 –