所有,
我再次陷入困境,试图以我需要的格式获取数据.我有一个看起来像这样的文本字段.
"deangelo 001 deangelo
当地名称来源:italain
来自美国名称deangelo
意思是:天使
情感谱•他是所有人欢乐的泉源.
个人诚信•他的好名声是他最宝贵的财富.个性•当你被火鸡包围时,很难翱翔老鹰!关系•开始缓慢,但与deangelo的关系随着时间的推移而建立.旅行和休闲•一生中的旅行是他的未来.
事业和金钱•一个有天赋的孩子,deangelo将需要不断挑战.
生活的机会•欢乐和幸福等待着这个有福的人.
deangelo的幸运数字:12•38•18•34•29•16
"
在Postgresql中删除回车符和新行的最佳方法是什么?我尝试过几件事情,但没有人想表现出来.
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;
Run Code Online (Sandbox Code Playgroud)
亚当,先谢谢你
val*_*gog 140
select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' )
Run Code Online (Sandbox Code Playgroud)
阅读手册http://www.postgresql.org/docs/current/static/functions-matching.html
pbn*_*son 31
select regexp_replace(field, E'[\\n\\r\\u2028]+', ' ', 'g' )
Run Code Online (Sandbox Code Playgroud)
我在postgres d/b中遇到了同样的问题,但问题的换行符不是传统的ascii CRLF,它是一个unicode行分隔符,字符U2028.上面的代码片段也会捕获该unicode变体.
更新......虽然我只是遇到过"野外"的上述角色,但要按照lmichelbacher的建议翻译更多类似unicode换行符的字符,请使用:
select regexp_replace(field, E'[\\n\\r\\f\\u000B\\u0085\\u2028\\u2029]+', ' ', 'g' )
Run Code Online (Sandbox Code Playgroud)
Sel*_*edy 20
OP专门询问有关正则表达式的问题,因为它会出现一些其他字符和换行符的问题,但对于那些只想删除换行符的人来说,你甚至不需要去正则表达式.你可以简单地做:
select replace(field,E'\n','');
Run Code Online (Sandbox Code Playgroud)
我认为这是一个SQL标准的行为,因此它应该延伸回所有但可能是最早的Postgres版本.上面在9.4和9.2中对我进行了测试
小智 7
如果您需要从字符串的开头或结尾删除换行符,可以使用:
UPDATE table
SET field = regexp_replace(field, E'(^[\\n\\r]+)|([\\n\\r]+$)', '', 'g' );
Run Code Online (Sandbox Code Playgroud)
请记住,帽子^表示字符串的开头,而美元符号$表示字符串的结尾.
希望它对某人有帮助.
| 归档时间: |
|
| 查看次数: |
85020 次 |
| 最近记录: |