如何删除Postgresql中的回车和新行?
所有,
我再次卡住试图让我的数据在我需要它的格式。我有一个文本字段,看起来像这样。
“deangelo 001 deangelo
名字的本地起源:italain
从美国名称deangelo
意思是:天使的
情感谱•他是所有人欢乐的泉源。
个人诚信•他的美名是他最宝贵的财富。 个性•当你被火鸡包围时,很难用鹰翱翔! 关系•开始缓慢,但与deangelo的关系随着时间而build立。 旅行和休闲•一生中的一次旅行是在他的未来。
职业和金钱•一个天才的孩子,deangelo将需要不断挑战。
生活的机会•欢乐和幸福等待着这个幸运的人。
deangelo的幸运数字:12•38•18•34•29•16
“
Postgresql最好的办法是删除回车和新行? 我已经尝试了几件事情,他们都不想performance出来。
select regexp_replace(field, E'\r\c', ' ', 'g') from mytable WHERE id = 5520805582 SELECT regexp_replace(field, E'[^\(\)\&\/,;\*\:.\>\<[:space:]a-zA-Z0-9-]', ' ') FROM mytable WHERE field~ E'[^\(\)\&\/,;\*\:.\<\>[:space:]a-zA-Z0-9-]' AND id = 5520805582;
在此先感谢,亚当
select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' )
阅读手册http://www.postgresql.org/docs/current/static/functions-matching.html
select regexp_replace(field, E'[\\n\\r\\u2028]+', ' ', 'g' )
我在postgres d / b中遇到了同样的问题,但是所涉及的换行符不是传统的ascii CRLF,它是一个Unicode字符分隔符U2028。 上面的代码片段也将捕获该Unicode变体。
更新…虽然我只遇到过“野外”中提到的字符,但要遵循lmichelbacher的build议来翻译更多的unicode换行字符,请使用以下命令:
select regexp_replace(field, E'[\\n\\r\\f\\u000B\\u0085\\u2028\\u2029]+', ' ', 'g' )
OP专门询问了正则expression式,因为它会出现一些其他字符以及换行符的问题,但是对于那些只想删除换行符的用户,甚至不需要去正则expression式。 你可以简单地做:
select replace(field,E'\n','');
我认为这是一个SQL标准的行为,所以它应该延伸到所有的,但可能是最早的Postgres版本。 上述testing在9.4和9.2中对我很好
在这种情况下,您需要从string的开头或结尾删除换行符,您可以使用以下命令:
UPDATE table SET field = regexp_replace(field, E'(^[\\n\\r]+)|([\\n\\r]+$)', '', 'g' );
请记住,帽子^
表示string的开始,美元符号$
表示string的结尾。
希望它能帮助别人。