我有一張桌子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
uj5u.com熱心網友回復:
您的索引已關閉,使用以下方法似乎有效
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)')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385354.html
標籤:sql sql-server
