我想要的是像这样转动一个字符串;
10 - 15 st. pan,cras
到
10 - 15 ST PANCRAS
我通过
获得了大部分内容 `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
答案 0 :(得分:1)
您可以将空间折叠添加到只有一个表达式,如下所示:
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)