我想要的是像这样转动一个字符串;
10 - 15 日平底锅,cras
到
10 - 15 圣潘克拉斯
我得到了大部分的方法
`select upper(regexp_replace('10 - 15 st. pan,cras', '[^a-zA-Z 0-9-]', '', 'g'));`
但我似乎无法删除数字周围的双空格。我试过了,在表达式中添加了一个额外的空格;
`select upper(regexp_replace('10 - 15 st. pan,cras', '[^a-zA-Z 0-9-]', '', 'g'));`
但结果没有区别。我正在使用 regexp_replace
,因为我发现 substring
语法更难理解。在 9.6 中,字符串存储在 text
最佳答案
您可以只对一个表达式添加空格折叠,如下所示:
t=# select regexp_replace('q q','( ){1,}',' ','g');
regexp_replace
----------------
q q
(1 row)
如果在一行中找到一个或多个后面的空格,则用单个空格替换。
所以在你的情况下会是
t=# select regexp_replace(upper(regexp_replace('10 - 15 st. pan,cras', '[^a-zA-Z 0-9-]', '', 'g')),'( ){1,}',' ','g');
regexp_replace
--------------------
10 - 15 ST PANCRAS
(1 row)
关于sql - postgres 中的 regexp_replace 仅保留单个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45483469/