Raj*_*mar 2 sql sql-server sql-server-2008
我有这么多很长的数据库,所以我seq_no在逗号中单独使用多个序列存储在单列中使用,但现在我想要在一个列中的所有序列,所以我很困惑如何为此创建此sql结果.
例如:
TABLE STRUCTURE SR_NO IS INT , SEQ_NO IS VARCHAR(MAX)
SR_NO SEQ_NO
---------------------------------
1 1839073,
2 1850097,1850098,
3 1850099,1850100,1850110
Run Code Online (Sandbox Code Playgroud)
我需要得到这个结果:
SEQ_NO
--------------
1839073
1850097
1850098
1850099
1850100
1850110
Run Code Online (Sandbox Code Playgroud)
谢谢!
declare @t table(Id int,seq varchar(100))
insert into @t (Id,seq) values (1,'1839073,'),(2,'1839073,1850098,'),(3,'1850099,1850100,1850110 ')
;With Cte as (
SELECT A.Id,
Split.a.value('.', 'VARCHAR(100)') AS Seq
FROM
(
SELECT Id,
CAST ('<M>' + REPLACE(seq, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM @t
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a) )
Select ID,Seq from Cte Where Seq > ''
Run Code Online (Sandbox Code Playgroud)