回答:
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');
(trueを返します)。これはまた、それが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)