2012-02-27 69 views
0

我在问题表中有一个名为categoryid的字段,其中可以输入多个值以显示不同的类别。 现在我想分开每个值并单独获取它。在sqlserver中分隔单个列的值

值被分离,字符

例如

categoryid varchar 
3 
3,8 
5,9,7 
8,5,7,3,2 

我怎样才能分开它们中的每使用SQL查询? 请帮忙

+0

categoryid a varchar或nvarchar类型? – ChrisBD 2012-02-27 12:22:33

+0

@ChrisBD varchar – Abhishek 2012-02-27 12:27:17

+1

也许你应该看看规范化你的数据? http://en.wikipedia.org/wiki/Database_normalization – 2012-02-27 12:27:31

回答

1
declare @T table 
(
    category_id varchar(10) 
) 

insert into @T 
select '3' union all 
select '3,8' union all 
select '5,9,7' union all 
select '8,5,7,3,2' 

;with C(ID, category_id) as 
(
    select cast(left(category_id, charindex(',', category_id+',', 1)-1) as int), 
     stuff(category_id, 1, charindex(',', category_id+',', 1), '') 
    from @T 
    union all 
    select cast(left(category_id, charindex(',', category_id+',', 1)-1) as int), 
     stuff(category_id, 1, charindex(',', category_id+',', 1), '') 
    from C 
    where len(category_id) > 0 
) 
select ID 
from C 
+0

这是分裂的数据,但加入后,所有的.........我希望它的方式,其中一个查询可以拆分上述任何人数据记录 – Abhishek 2012-02-27 13:09:08

+0

@Abhishek好的。你想拆分哪一个?应该通过在CTE的第一部分添加where子句来解决。 'Where SomeColumn ='SomeValue'' – 2012-02-27 13:23:51

+0

我能够分裂2或我能够分裂3但不是两种类型。我的意思是,如果我写一个查询分裂2它不会工作分裂更多的值和反之亦然 – Abhishek 2012-02-27 13:34:46

相关问题