안녕하세요 고수님들...
a라는 테이블에 b라는 컬럼이 있는데 이곳의 값은 = 1,2,3,4,5,6,7
이렇게 값이 들어가 있습니다. 그런데....
이걸
,를 기준으로 다 자르고 싶어요..
1
2
3
4
5
6
7
이런식으로요.. 가능할까요???
응용 해보세요..숙제는 직접
charindex,stuff,substrings등을 이용해서 해보세요~
bcp의 필드구분자를 ,로 사용하여 upload하면 될 것 같습니다.
ex)
1. 샘플 생성
create table ybtest
(
pk char(1),
c char(100)
)
insert ybtest values('1', '1,2,3,4,5,6,7')
insert ybtest values('2', '1,2,3,4')
2. ','의 갯수를 찾는다.
select pk, c, datalength(rtrim(c)) - datalength( rtrim(str_replace(c, ',', null))) as len
into #temp
from ybtest
3. ','의 갯수를 동일하게 만든다
select max(len) from #temp 로 조회 후
select pk, rtrim(c)+replicate(',', 6-len) as data
into ybtest2
from #temp
4.max(len) +1개 만큼의 column을 만든다.
create table ybtest3
c1 char(1) null,
c2 char(1) null,
c3 char(1) null,
c4 char(1) null,
c5 char(1) null,
c6 char(1) null,
c7 char(1) null
5. bcp로 데이터를 다운로드 받는다.
bcp wrk..ybtest2 out k.txt -c -t',' -r'\n' -Usa -P
6. bcp로 임시테이블에 upload한다
bcp wrk..ybtest3 in k.txt -c -t',' -r'\n' -Usa -P
결과만 원하시는데로 보고 싶다면 아래와 같이 처리만 하면 심플하게 되겟네요. create table #ybtest ( pk char(1), c char(100) )
insert #ybtest values('1', '1,2,3,4,5,6,7')
select str_replace( c , ',' , char(10) ) from #ybtest