Redshift:如何删除字段中的所有换行符

Redshift: how to remove all newline characters in a field

我想知道如何从字段中删除 Redshift 中的所有换行符。我试过这样的事情:

replace(replace(body, '\n', ' '), '\r', ' ')

regexp_replace(body, '[\n\r]+', ' ')

但是没有用。如果您知道如何执行此操作,请分享。

使用chr(10)代替\n

示例:

select replace(CONCAT('Text 1' , chr(10), 'Text 2'), chr(10), '-') as txt

这应该有帮助

regexp_replace(column, '\r|\n', '')

其他两个答案都不适合我(不确定 Redshift 是否自 2015 年以来更新了其对正则表达式的处理?),但我使用以下方法取得了成功:

regexp_replace(field_name, '[\n|\r]*')

要删除换行符:

SELECT REPLACE('This line has
a line break', CHR(10), '');

这给出了输出:This line hasa line break。您可以在此处查看更多 ASCII 或 CHR() 代码:https://www.petefreitag.com/cheatsheets/ascii-codes/

删除\r、\n、\t等特殊字符

假设 col1 有类似 This line has\r\n special characters 的文本。

使用replace()

SELECT REPLACE(REPLACE(col1, '\r', ''), '\n', '');

我们需要转义 \ 因为反斜杠在 SQL 中是特殊字符(用于转义双引号等...)

使用regexp_replace()

SELECT REGEXP_REPLACE(col1, '(\\r|\\n)', '');

我们需要对 \ 进行转义,因为它是 SQL 中的一个特殊字符,我们需要再次对生成的反斜杠进行转义,因为反斜杠在正则表达式中也是一个特殊字符。

replace()regexp_replace() 都给出输出:This line has special characters.