postgres - 在distinct子句中的regexp_replace?

时间:2010-03-29 02:21:54

标签: regex postgresql replace whitespace

好的......在这里更改问题......我在尝试时遇到错误:

SELECT COUNT ( DISTINCT mid, regexp_replace(na_fname, '\\s*', '', 'g'), regexp_replace(na_lname, '\\s*', '', 'g'))
FROM masterfile;

是否可以在像这样的不同子句中使用regexp?

错误是这样的:

WARNING:  nonstandard use of \\ in a string literal
LINE 1: ...CT COUNT ( DISTINCT mid, regexp_replace(na_fname, '\\s*', ''...

1 个答案:

答案 0 :(得分:1)

select trim(regexp_replace(E'\tfoo  \t bar  baz   ', E'\\s+', ' ', 'g'))

用一个空格替换所有(由于'g'标志)空格(\s)序列(+),然后修剪它,返回:

"foo bar baz"

E表示使用\转义编码。

使用新编辑的问题,您可能正在寻找以下内容的查询:

select count(*) from (
    select distinct 
        mid, 
        regexp_replace(na_fname, E'\\s*', '', 'g'), 
        regexp_replace(na_lname, E'\\s*', '', 'g') 
    from masterfile) as subquery;