2017-04-13 16 views
1

すべてのパイプと改行をデータベースの空きテキストフィールドのスペースで置き換えたいと思います。Teradataでregexp_replaceを使用してパイプ(|)をスペースに置き換えるにはどうすればよいですか?

私の現在のアプローチは、次のようになります。

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

私の考えでは、パイプを交換することです|スペースを入れてから再度結果を確認すると、すべての改行が置き換えられます。問題は、CSVを壊すパイプがまだ残っているということです。なぜなら、その区切り文字は|であるからです。

誰でも私をここで助けることができます。

PS:デリミッタを別のものに変更できません。

答えて

1

パイプ記号は、正規表現内の特殊文字で、複数の選択肢に分割するため、エスケープする必要があります。

あなたはすべてのパイプラインブレーク文字を置換したい場合は、入れ子にする必要はありません。

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

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

しかし、それらとしては、あなたは、単にあなただけあれば

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

を使用することができ、単一の文字でありますそれらの文字の連続した出現を、あなたが必要とする単一のスペースで置き換えることを希望しますRegEx:

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

ありがとうございましたansあなたの最後の例の終わりに+は何をするのですか? –

+0

@MickyMaus:複数の連続する文字を1つの空白で置き換えます。 '' a ||| b'' - > '' a b''またはウィンドウのCRLF。 – dnoeth

+0

しかし、それはまた、単一の文字を置き換えるでしょうか?もう一度ありがとう、これは本当に私を助けました。 –

関連する問題