프로시저에서 'A,B,C,D,E,F,G' 라는 값을 받아서
테이블 COL1에 각각 A B C D E F G 라고 입력하려고 합니다.
COL1
A
B
C
D
E
F
G
이런식으로 저장을 하려고 하는데 어떻게 ,를 구분해서 각각 저장할 수 있을까요.
SELECT REPLACE(COL1, ',', CHAR(13)+CHAR(10))
이런식으로 하니
,는 없어지고 A B C D 이런식으로 나오던데 이것을 각각 어떻게 떼어낼지 잘 모르겠습니다.
그리고 REPLACE의 마지막 인자가 어떻값으로 대체한다고 알고있는데 여기서 CHAR(13)+CHAR(10) 이 의미하는 것을 잘 모르겠습니다.
Comment 7
-
catchv
2013.03.27 10:46
-
치맥
2013.03.27 13:30
답변 감사합니다.
제 실력으로는 응용하기가 어렵네요 .ㅜ
-
Light
2013.03.27 12:32
여기에 문자열이 특정 구분자에 의해 구분되어 테이블로 반환되는 함수를 만들어서 올렸습니다.
원하시는 결과를 얻으실 수 있을거 같습니다.
참고하시기 바랍니다.^^
-
치맥
2013.03.27 13:30
답변 감사합니다.
실험해보니 잘 되네요^^
근데 함수를 사용하지 않고 프로시저 상에서만 구현해 보고싶은데
만드신 함수로 응용해보려니 잘 안되네요 ㅜ.ㅜ
-
치맥
2013.03.27 14:25
CREATE PROC TEST
@TEST VARCHAR(MAX)
ASSET NOCOUNT ON
SELECT SUBSTRING(@TEST, B.NUMBER, B.C - B.NUMBER) AS SPLIT
FROM DBO.TEST_TBL A
CROSS APPLY ( SELECT NUMBER , CHARINDEX(',',@TEST + ',', NUMBER+1) AS C
FROM MASTER..SPT_VALUES
WHERE NUMBER = CHARINDEX(',',',' + @TEST, NUMBER)
AND TYPE ='P' ) B
GO이런식으로 작성해서 AAA,BBB,CCC 를 파라미터 값으로 넘겼을때
AAA
BBB
CCC
이렇게 값이 나오길 원하는데
AAA
BBB
CCC
AAA
BBB
CCC
.
.
.
이렇게 반복된 값이 계속 나타나네요.
-
건우아빠
2013.03.27 14:34
-
치맥
2013.03.28 11:58
감사합니다^^
http://www.sqler.com/474965
이 내용을 참고 하시면 될 것 같습니다.
CHAR(13) \r (Carriage return)은 캐럿이 그 줄 맨 앞으로 갑니다.
CHAR(10) \n (Line feed)은 캐럿이 다음 줄로 갑니다.
Windows의 엔터키 입력 값으로 보시면 됩니다.
-- catchv