조회 결과셋 내에 개행문자를 추가하고 싶습니다.(글 수정된 내용 조금 ^^;) 0 1 7,490

by 김태원 [SQL Query] 개행문자 [2015.03.09 15:52:29]


안녕하세요. 다음과 같은 궁금증이 있어 질문드립니다.

보통은 db에 저장된 문자열 중에 개행문자가 포함되어있는 경우 그걸 ' '와 같은 형태로 치환하는걸 많이들 물어보시던데

저의 경우는 반대의 경우입니다.

결과셋에 개행문자를 넣어서 2줄 이상으로 표현할 수 있는 방법이 있는지 궁금합니다.

예를 들어서 다음과 같은 결과를 말하는거지요.

 

SQL문장)

SELECT 'AAA' || CHR(10) || 'CCC' AS COL1, 'BBB' || CHR(10) || 'DDD' AS COL2 FROM DUAL
UNION ALL
SELECT 'EEE' AS COL1, 'FFF' AS COL2 FROM DUAL;

원하는 결과)
LINE-NUM COL1 COL2
1                  AAA    BBB
                   CCC    DDD
2                  EEE    FFF

 

처음 글을 다 쓰고 이리저리 해보다가 결과셋에서 원하는 결과를 얻어내었습니다.

SELECT 'AAA' || CHR(13) || CHR(10) || 'BBB' AS COL1 FROM DUAL;

위와 같이 개행문자를 사용하니깐 해결되었고,

최초 글을 올릴 당시에는 그냥 DB조회툴만 보면서 결과가 제대로 나오지 않았다고 생각했습니다.(PL/SQL DEVELOPER사용)

PL/SQL DEVELOPER 상에서 결과 그리드를 좀 더 확인해본 결과 보기에는 옆으로 붙어서 나오더라도

실제 결과는 개행문자로 되어 2줄로 나온다는 것을 알고 답글을 "해결됐다"라고 달았는데요.

이를 실제로 화면에서 조회를 하니깐... 그냥 붙어서 나옵니다...

 

처음에는 이게 간단히 SQL 쿼리 관련 문제로 생각하고 이곳에 올렸으나,

결과를 여기까지 보고나니, SQL부분은 해결된채로 그 이후단에서 해결해야할 문제로 보입니다...

결과셋을 받은 후 JSP에서 처리하는 부분에서 개행문자를 무시한다던가 하는 문제 같은데...

이건 이곳에서 사용하는 그리드 툴 관련한 API를 참조해야할까요...

가우스라는 것을 사용하고 있는데... 매뉴얼을 찾아보아도 관련된 정보는 없네요...

좀 오래된 그리드 모듈이라;;;

혹시 해서 SQL 적으로 질문을 더 드리자면,

IBATIS 같은걸 사용하지 않고, 조회쿼리를 무조건 함수로 만들어놓습니다.

그래서 조회를 시작하면 JSP에서 해당 함수를 호출하고,

함수에서 실행된 쿼리의 결과를 REFERENCE CURSOR 형태로 반환을 합니다...

이것 역시 이곳 기본 구조라 바꿀수가 없구요...(못바꾸게 하네요;;)

 

CREATE OR REPLACE FUNCTION FUNC1 (
p_PARAM1 VARCHAR2
)
RETURN TYPES.REF_CURSOR
AS
RET_CUR TYPES.REF_CURSOR
BEGIN
     OPEN RET_CUR FOR
     SELECT * FROM TAB1;

     RETURN RET_CUR;
END;

위와 같은 형태인데... REFERENCE CURSOR 형태로 결과셋을 반환하는 경우는...

개행문자 관련된 내용이 어떻게 되는지... 찾아보고 있는 중인데 정보가 없네요...

혹시 이와 관련해 아시는 분 계시면 가르침을 좀 주세요 ^^;

감사합니다. __)

by 비주류 [2015.03.10 09:47:45]

사용하시는 솔루션은 잘 모르겠지만, 말씀하신 것처럼 각 단에서 문자열이 어떻게 출력되는지 디버깅해보시는 것이 좋을 것 같습니다. 아무래도 웹 디스플레이 하는 쪽 문제일 것 같은데요.
(아시겠지만) html 이라면 CR&LF, LF등은 <BR/>과 같이 변환해줘야 할 것이고, 
그리드툴이라면 개행문자처리에 관한 옵션이 있을 것같네요.
fiddler나 크롬 개발자도구 등으로 서버의 response 도 확인해보세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입