我有一个表1
skillname skillid
Test 1100246|3;1100247|3;1102797|3;1108399|3;
我的目标是摆脱|3;结果就像这个
skillname skillid New1 New2 New3 New4
Test 1100246|3;1100247|3;1102797|3;1108399|3; 1100246 1100247 1102797 1108399
我的代码
Select
SkillName
,SkillID
,New1
,New2
,New3
,New4
FROM Table1
Cross Apply (
Select New1 = xDim.value('/x[2]','varchar(50)')
,New2 = xDim.value('/x[3]','varchar(50)')
,New3 = xDim.value('/x[4]','varchar(50)')
,New4 = xDim.value('/x[5]','varchar(50)')
From ( values (cast('<x>' + replace(SkillID,'|3;','</x><x>')+'</x>' as xml))) A(xDim)
)b
代码工作不正常。任何人都可以看到这些问题。谢谢
结果
SKillname SkillID New1 New2 New3 New4
Test 1100246|3;1100247|3;1102797|3;1108399|3; 1133797|3 NULL NULL NULL
您的索引已关闭,使用以下选项似乎可以工作
Select
New1 = xDim.value('/x[1]','varchar(50)')
,New2 = xDim.value('/x[2]','varchar(50)')
,New3 = xDim.value('/x[3]','varchar(50)')
,New4 = xDim.value('/x[4]','varchar(50)')