0

Ok... changing the question here... I'm getting an error when I try this:

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

Is it possible to use regexp in a distinct clause like this?

The error is this:

WARNING:  nonstandard use of \\ in a string literal
LINE 1: ...CT COUNT ( DISTINCT mid, regexp_replace(na_fname, '\\s*', ''...
2
  • That's a warning, not an error. To indicate that a string literal is using \ to escape special characters, use an E before the string literal. Commented Mar 29, 2010 at 2:41
  • My bad... You'd think the WARNING would have tipped me off... Commented Mar 29, 2010 at 8:59

1 Answer 1

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

replaces all (due to the 'g' flag) whitespace (\s) sequences (+) with a single space, then trims it, returning:

"foo bar baz"

The E is to indicate that the \ escape encoding is used.

With your new, edited question, you're probably looking for a query along the lines of:

select count(*) from (
    select distinct 
        mid, 
        regexp_replace(na_fname, E'\\s*', '', 'g'), 
        regexp_replace(na_lname, E'\\s*', '', 'g') 
    from masterfile) as subquery;
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks for this... I did figure this part out... I'm trying to do a count distinct (I edited my original question). Any suggestions on how to do that? I tried doing it as a select count(*) where mid in ( select count ( distinct ... ), but I get "subquery has too many columns"...
Thank you again. I'm a bit out of my depth with pg, so I appreciate the guidance

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.