PostgreSQL에 전화 번호를 어떻게 저장합니까?


답변:


21

libphonenumber

가능하면 항상 표준 양식을 사용하십시오. 양식이 표준화 될수록 좋습니다. 표준이 있으면 사용하십시오. 이 문제를 해결하려면 pg-libphonenumber의 프록시로 Google의 libphonenumber를 사용 하십시오 .

CREATE EXTENSION pg_libphonenumber;

현재 phone_number비교 연산자와 함수가 있는 유형을 설치합니다 . 국제 표준 형식으로 번호를 저장합니다. 이것은 내 의견으로는 가장 타협입니다.

parse_phone_number('textnumber', 'CountryCode');

전화 번호가 서로 같은시기를 알 수 있고 내부 정규 양식을 제공하기 때문에이 작업을 수행 할 수 있습니다.

SELECT parse_phone_number('03 7010 1234', 'AU') = parse_phone_number('(03) 7010 1234', 'AU');

(참으로 돌아갑니다). 이것은 또한 효과가 있음을 의미 DISTINCT하므로 위에서 원하는 것처럼 효과를 얻을 수 있습니다.

CREATE TABLE foo
AS
  SELECT DISTINCT parse_phone_number(ph, 'AU')
  FROM ( VALUES
    ('0370101234'),
    ('03 7010 1234'),
    ('(03) 7010 1234')
  ) AS t(ph);
SELECT 1

그게 ..

 parse_phone_number 
--------------------
 +61 3 7010 1234
(1 row)

8
불행히도, 패키지는 1 년 이상 알파 상태 인 것 같습니다 ... 프로덕션 환경에서 사용하려는 경우 높은 관리 수준을 권장합니다.
— joanolo

2
@joanolo 당신 말이 맞아요, 새로운 기여자 인 에반 캐롤이 오늘 막 새로운 커밋을 한 것 같습니다 확장에 기여 ...
— Dario

3
나는 문서에 "기여"했다. 그리고 나는 문서를 향상시키기 위해 항상 같은 방식으로 이것을 게시하기 전에 그렇게했습니다. 나는 어떤 의미에서든 "기여자"가 아닙니다. 커밋 비트가 없습니다. C ++ 코드를 작성하지 않습니다. PgSQL에서 libphonenumber 바인딩과 그에 대해 알고 다른 사람들이 사용하는 방법에 대해 열정적입니다.
— Evan Carroll

5
문서에 기여하고 있습니다. ;) 그리고이 게시물 때문에 내 안전하고 중요하지 않은 프로젝트에서 libphonenumber를 사용합니다. 감사합니다.
— Dario

4
그 가치를 위해, 우리는 데이터베이스에 들어가기 전에 libphonenumber를 사용하여 숫자를 정규화합니다. 다른 클라우드 기반 postgres 배포.
— John Hamelink
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.