Postgresql

如何在 PostgreSQL 中儲存電話號碼?

  • February 18, 2017

假設我想將電話號碼儲存在數據庫中。我可以接受來自美國以外的電話號碼。我將如何儲存這些電話號碼?

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)

引用自:https://dba.stackexchange.com/questions/164796