如何在Teradata中使用regexp_replace用空格替换Pipe(|)?

时间:2017-04-13 07:14:02

标签: sql teradata regexp-replace

我想在我的数据库中的自由文本字段中用空格替换所有管道和换行符。

我目前的做法如下:

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

我的想法是更换管道使用空格然后再次检查结果并替换所有换行符。现在的问题是那里仍然存在管道,因为我的分界符是|。

希望有人可以帮助我。

PS:我无法将分隔符更改为其他内容。

1 个答案:

答案 0 :(得分: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]+',' ')