我想知道如何从字段中删除Redshift中的所有换行符。我试过这样的事情:
replace(replace(body, '\n', ' '), '\r', ' ')
和
regexp_replace(body, '[\n\r]+', ' ')
但它没有用。如果你知道怎么做,请分享。
答案 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/
假设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
。