删除不需要的字符并获取新列



我有一个表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)')

最新更新