개행문자 제거 0 4 6,305

by 혼수상태 [SQL Query] [2024.11.13 17:47:07]


안녕하세요

개행문자 제거 관련해서 질문좀 드립니다.

select ' aaaaa

bbbbb

ccccc


ddddd



eeeee



'  as txt from dual

과 같은 데이터가 있을때 중간중간에있는 라인피드랑 마지막 불필요한 라인피드들만 제거하고 싶은데요

방법이 있을까요??

 

---원하는결과

aaaaa

bbbbb

ccccc

ddddd

eeeee

 

by Hinori_ [2024.11.13 18:27:20]

REGEXP_REPLACE 사용하시면 됩니다.

SELECT REGEXP_REPLACE(
' aaaaa
 
bbbbb
 
ccccc
 
 
ddddd
 
 
 
eeeee
 
 
 
', '(\r\n|\r|\n)(\r\n|\r|\n)+'  -- 연속된 개행 문자 패턴
, CHR(10)                          -- 하나의 개행 문자로 대체
) AS ResultText
FROM dual;


by 혼수상태 [2024.11.14 10:50:33]

안되는데요...ㅡ.ㅡ;;


by 뉴비디비 [2024.11.15 20:34:36]

REGEXP_REPLACE 사용하면 되는데요. 
올려주신 예시 기준이며, 정규식은 패턴이 일치해야 되기 때문에 실제 데이터에는 거기에 맞도록 수정하셔야 합니다. 

SELECT trim(REGEXP_REPLACE(' aaaaa
 
bbbbb
     
ccccc
      
 
ddddd
       
 
                 
eeeee
 
 
 
' ||' ', '('|| chr(13)||chr(10) ||')'|| chr(32)||'{1,}' , '' ) ) AS txt FROM dual;

 


by 마농 [2024.11.18 09:22:11]

보통 줄바꿈은 CHR(13)||CHR(10) 한쌍으로 구성되는데.
위처럼 쿼리 직접 수행하면 CHR(10) 만으로 구성되네요.
실제 DB 에 저장된 데이터 패턴을 확인해 보세요.
어떤 구성인지? CHR(13)||CHR(10) 인지? CHR(10) 인지? 섞여 있는지?
dump 를 통해 확인 가능합니다.
SELECT DUMP(txt) FROM t;
어떤 구성이냐에 따라 구현 방법이 다를 수 있습니다.

-- 1. 연속 CHR(13)||CHR(10) 제거 및 마지막 줄바꿈 제거 추가
, REPLACE(txt, CHR(10)||CHR(13)) v1
, REGEXP_REPLACE(
  REPLACE(txt, CHR(10)||CHR(13))
  , CHR(13)||CHR(10)||'$') v2

-- 2. 연속 CHR(10) 제거
, REGEXP_REPLACE(txt, CHR(10)||'+', CHR(10)) v1
, REGEXP_REPLACE(
  REGEXP_REPLACE(txt, CHR(10)||'+', CHR(10))
  , CHR(10)||'$') v2

-- 3. 혼합인 경우
, REGEXP_REPLACE(txt, '('||CHR(13)||CHR(10)||'|'||CHR(10)||')+', '\1') v1
, REGEXP_REPLACE(
  REGEXP_REPLACE(txt, '('||CHR(13)||CHR(10)||'|'||CHR(10)||')+', '\1')
  , '('||CHR(13)||CHR(10)||'|'||CHR(10)||')$') v2

 

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