문자('abcd~efg~hijk')가 입력되었을 때 문자 중간에 있는 "~"특정 문자를 기준으로 잘라서 다른 행으로 출력하고 싶습니다.
=========================================
declare @aaa varchar(max)
set @aaa = 'abcd~efg~hijk'
select (@aaa)
=========================================
결과
(열 이름 없음)
----------------------
1| abcd~efg~hijk
=========================================
원하는 결과
(열 이름 없음)
----------------------
1|abcd
2|efg
3|hijk
=========================================
위와 같은 값이 필요한 이유는
쿼리구문을 짜던 중
where data in (@aaa) 이부분에
where data in ('abcd','efg','hijk') 이렇게 값이 들어가야 하기 때문입니다.
Comment 1
-
Terry
2017.04.08 16:35
set @aaa = 'abcd~efg~hijk'
;with tblA(txt,txt_ori) As
(
Select SubString(@aaa,1,charindex('~',@aaa)-1)
,SubString(@aaa,charindex('~',@aaa)+1,Len(@aaa))
Union All
Select SubString(a.txt_ori,1,charindex('~',a.txt_ori)-1)
,SubString(a.txt_ori,charindex('~',a.txt_ori)+1,Len(a.txt_ori))
From tblA a
Where charindex('~',a.txt_ori) <> 0
Union All
Select a.txt_ori
,''
From tblA a
Where charindex('~',a.txt_ori) = 0
And a.txt_ori <> ''
)
select a.txt
From tblA a