0

カンマで区切られた値を持つ1つの列を持つテーブルがあり、行に必要です。

お気に入り

col1
3,4,5
5,6,6

戻り結果は次のようになります

col1
3
4
5
5
6
6
4

3 に答える 3

2
    declare @tbl table(data nvarchar(100))
    insert into @tbl values('1,2,3')
    insert into @tbl values('4,5,6')
    insert into @tbl values('7,8,9')

     SELECT   
     Split.a.value('.', 'VARCHAR(100)') AS String  
     FROM  (SELECT data,  
         CAST ('<M>' + REPLACE(data, ',', '</M><M>') + '</M>' AS XML) AS String  
     FROM  @tbl) AS A CROSS APPLY String.nodes ('/M') AS Split(a);  
于 2012-12-11T10:13:22.543 に答える
0

以下は、カンマ区切りの値をループする方法を説明していると思います。それらを別の変数に挿入するだけで、必要な出力を取得できます。

カンマ区切り値の分割

于 2012-12-11T09:58:38.517 に答える
0

再帰クエリを使用して、この分割を実行できます。

;with cte (item, list) as
(
  select 
    cast(left(col1, charindex(',',col1+',')-1) as varchar(50)) item,
         stuff(col1, 1, charindex(',',col1+','), '') list
  from yourtable
  union all
  select 
    cast(left(list, charindex(',',list+',')-1) as varchar(50)) item,
    stuff(list, 1, charindex(',',list+','), '') list
  from cte
  where list > ''
) 
select item
from cte

SQL FiddlewithDemoを参照してください

于 2012-12-11T10:18:35.030 に答える