我在问题表中有一个名为categoryid的字段,其中可以输入多个值以显示不同的类别。 现在我想分开每个值并单独获取它。在sqlserver中分隔单个列的值
值被分离,字符
例如
categoryid varchar
3
3,8
5,9,7
8,5,7,3,2
我怎样才能分开它们中的每使用SQL查询? 请帮忙
我在问题表中有一个名为categoryid的字段,其中可以输入多个值以显示不同的类别。 现在我想分开每个值并单独获取它。在sqlserver中分隔单个列的值
值被分离,字符
例如
categoryid varchar
3
3,8
5,9,7
8,5,7,3,2
我怎样才能分开它们中的每使用SQL查询? 请帮忙
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
categoryid a varchar或nvarchar类型? – ChrisBD 2012-02-27 12:22:33
@ChrisBD varchar – Abhishek 2012-02-27 12:27:17
也许你应该看看规范化你的数据? http://en.wikipedia.org/wiki/Database_normalization – 2012-02-27 12:27:31