2010-03-29 2 views
0

좋아요 ... 여기에 질문을 변경 ... 내가 오류를 받고 있어요 :postgres - distinct 절의 regex_replace? 나는이 때

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*', ''... 
+0

: 새 편집 질문

, 당신은 아마의 라인을 따라 쿼리를 찾고 있습니다. 문자열 리터럴이 \를 사용하여 특수 문자를 이스케이프하도록 지정하려면 문자열 리터럴 앞에 'E'를 사용하십시오. –

+0

내 나쁜 ... 당신은 경고가 나를 훔쳐 갔을 거라고 생각할거야 ... – n00b0101

답변

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; 
+0

고마워요 ... 나는이 부분을 알아 냈어 ... 나는 별개의 수를하려고 노력 중이다. (나는 원래의 것을 편집했다. 문제). 어떻게해야하는지에 대한 제안? 나는 선택 카운트 (*) 중반에서 (select count (distinct ...)) 중 하나를 시도했지만 "서브 쿼리에 너무 많은 컬럼이있다."... – n00b0101

+0

다시 한번 감사드립니다. 깊이있는 Pg로 안내에 감사드립니다. – n00b0101