postgres - regex_replace в отдельной статье? - PullRequest
0 голосов
/ 29 марта 2010

Ладно ... меняю вопрос здесь ... Я получаю сообщение об ошибке при попытке:

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

Можно ли использовать регулярное выражение в отдельном предложении, подобном этому?

Ошибка такова:

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

1 Ответ

1 голос
/ 29 марта 2010
select trim(regexp_replace(E'\tfoo  \t bar  baz   ', E'\\s+', ' ', 'g'))

заменяет все (из-за флага 'g') пробельные (\s) последовательности (+) на один пробел, затем обрезает его, возвращая:

"foo bar baz"

E означает, что используется escape-кодировка \.

В новом отредактированном вопросе вы, вероятно, ищете запрос в следующем формате:

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