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

时间:2015-09-03 04:42:59

标签: amazon-redshift postgresql-8.4

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

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

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

但它没有用。如果你知道怎么做,请分享。

4 个答案:

答案 0 :(得分:4)

使用chr(10)代替\n

示例:

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

答案 1 :(得分:0)

这应该有帮助

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

要删除换行符:

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中的特殊字符,我们也需要对转义的反斜杠再次进行转义,因为反斜杠在regex中也是特殊字符。

replace()regexp_replace()都提供输出:This line has special characters