다른 범주를 표시하기 위해 여러 값을 입력 할 수있는 질문 표에 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
데이터를 분할하는 중입니다. 그러나 모두에 합류 한 후 ......... 위와 같은 방법으로 쿼리를 분할 할 수 있습니다. 데이터 – Abhishek
@Abhishek Ok. 어느 쪽을 나누고 싶습니까? CTE의 첫 번째 부분에 where 절을 추가하여 해결해야합니다. 'SomeColumn = 'SomeValue'' –
나는 2를 나눌 수 있는데, 3을 나눌 수 있지만 두 개의 types.i는 나눌 수 없다. 2를 나누는 쿼리를 작성하면 그 값과 viceversa보다 더 많은 것을 나눌 수 없다. – Abhishek
categoryid varchar 또는 nvarchar 유형? – ChrisBD
@ChrisBD varchar – Abhishek
아마 데이터를 정규화해야할까요? http://en.wikipedia.org/wiki/Database_normalization –