sql - 如何为这个结果编写 SQL 查询?

标签 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    

我需要得到这个结果:

SEQ_NO 
--------------
1839073
1850097
1850098
1850099
1850100
1850110 

谢谢!

最佳答案

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 > ''

关于sql - 如何为这个结果编写 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29771283/

相关文章:

PHP 语法(如果或)

php - Mysql查询逻辑以及一遍又一遍返回相同变量的循环

c# - 将 3 个 GridView 导出到 3 个不同的工作表中

mysql - 如何在mysql中选择今天的第一个航类

c# - EnitityFramework 比较字符串的速度非常慢,因为创建了 nvarchar sqlparameter 而不是 varchar

SQL 约束问题

asp.net - 使用 ASP.NET 从 Microsoft Dynamics Nav 检索二进制/Blob 文件

sql-server-2008 - 无法以 SQL 用户帐户身份通过​​证书打开对称 key

sql - 如何从列中获取最小值

sql server 按表中的第一列排序