Postgres regex 子字符串转义字符



数据包含以下格式的一系列名称:

ABC123456 XYZ987654 DE-234567

查询

select distinct(substring(field, '([A-Z]{1,3})')) pref, count(*) tot from table;

用字符标识条目。问题是:什么是转义字符将"-"字符与字母字符一起拉动。"-"字符用于选择字符序列 [A-Z]。如何扩展该选择序列以包含"-"字符。

"-"字符用于选择字符序列 [A-Z]

破折号-仅在位于其他字符中间时才被解释为范围。如果将其放在字符类的开头或结尾,则它只是一个常规字符:

select distinct(substring(field, '([A-Z-]{1,3})')) pref, count(*) tot from  table;
--                                     ^

[-A-Z]也会起作用。

最新更新