2017-04-13 7 views
1

모든 파이프와 줄 바꿈을 데이터베이스의 자유 텍스트 필드에 공백으로 바꾸고 싶습니다.Teradata에서 regexp_replace를 사용하여 파이프 (|)를 공백으로 바꿀 수 있습니까?

내 현재의 접근 방식은 다음과 같습니다 :

SELECT ID, REGEXP_REPLACE(REGEXP_REPLACE(FREETEXT,'|',‘ ‘),‘\n',' ') FROM TABLE

내 생각은 파이프를 교체하는 것입니다 | 공백이 있으면 결과가 다시 확인되고 모든 줄 바꿈이 대체됩니다. 문제는 CSV를 망가 뜨리는 파이프가 여전히 존재한다는 것입니다.

누구나 나를 도와 줄 수 있기를 바랍니다.

추신 : 다른 사람에게 구분 기호를 변경할 수 없습니다.

답변

1

파이프 기호는 정규 표현식의 특수 문자로 여러 대안으로 분할되므로 이스케이프 처리해야합니다.

모든 파이프와 줄 바꿈 문자를 교체하려는 경우, 당신은 중첩이 없습니다 : 당신은 단순히 당신 만하면

OTranslate(FREETEXT, '7C0A0D'xc,' ') 

을 사용할 수 있습니다

RegExp_Replace(FREETEXT,'[\|\n\r]',' ') 

\| pipe 0x7C 
\n line feed 0x0A 
\r carriage return 0x0D 

하지만 그와 같은

단일 문자입니다 해당 문자가 연속 된 자리를 하나의 공백으로 교체하려는 경우 RegEx :

RegExp_Replace(FREETEXT,'[\|\n\r]+',' ') 
+0

감사합니다. wer, 당신의 마지막 모범의 끝에 + 무엇을합니까? –

+0

@MickyMaus : 여러 연속 문자를 단일 공백으로 대체합니다 (예 : ''a ||| b'' ->''a b '' 또는 윈도우 CRLF. – dnoeth

+0

하지만 한 문자를 바꿀 수도 있습니까? 다시 한 번 고마워, 정말 도움이. –