2014-12-09 2 views
1

SQL 문에서 Oracle regexp를 사용하여 후행 공백과 chr (10) 및 chr (13) 만 제거하려면 어떻게합니까?Oracle regexp 후행 공백

예 :

with txt as (select chr(10)||chr(10)||' Hey Bob '||chr(10)||chr(13) a from dual) 
select a 
     ,regexp_replace(a,chr(10)||'+|'||chr(13)||'+|'||chr(32)||'+$','') 
     ,regexp_replace(a,'['||chr(10)||'+'||chr(13)||'+'||chr(32)||'+]$','') 
    from txt; 

원하는 결과 :

' Hey Bob' 
1. Leading and non-trailing spaces remain 
2. Trailing spaces and eol characters removed 

답변

3

모든 공백 캡처 [[:space:]]를 사용하는 것이 좋을 것이다 : 당신은 명시 적으로 단지 새로운하려는 경우

regexp_replace(a, '[[:space:]]+$', '') 

을하지만, 줄 (10), 캐리지 리턴 (13) 및 공백 (32) 문자를 사용하면 다음을 수행 할 수 있습니다.

regexp_replace(a, '[' || chr(10) || chr(13) || ' ]+$', '') 
--            ^-- space character. 
+0

대단히 고마워요. - 내가 '필요한 것입니다.'- '[]'의 바깥 쪽을 이동하십시오. – Adam

+0

또한 명시 적 줄 바꾸기 대신 [: space :]를 사용하여 시도해 보았습니다. 완벽하게 작동합니다 - 탭 문자도 처리합니다. 감사! – Adam