답변:
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)