質問表に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 varcharまたはnvarcharタイプ? – ChrisBD
@ChrisBD varchar – Abhishek
おそらくあなたはあなたのデータを正規化する必要がありますか? http://en.wikipedia.org/wiki/Database_normalization –