如何在 Teradata 中使用 regexp_replace 将管道 (|) 替换为 space?

How can I replace Pipe (|) with space using regexp_replace in Teradata?

我想用 space 替换我数据库中自由文本字段中的所有竖线和换行符。

我目前的方法如下所示:

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

我的想法是换水管|使用 space 然后再次检查结果并替换所有换行符。现在的问题是那里仍然有管道弄乱了 CSV,因为我的分隔符是 |.

希望有人能帮助我。

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

管道符号是正则表达式中的一个特殊字符,将其拆分为多个选项,因此您必须对其进行转义。

如果您想替换所有竖线和换行符,您不必嵌套:

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

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

但由于这些是单个字符,您可以简单地使用

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

仅当您想用单个 space 替换连续出现的这些字符时,您才需要 RegEx:

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