1

我想要的是像这样转动一个字符串;

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

4

1 回答 1

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)
于 2017-08-03T12:11:51.737 回答