Postgresql
如何在 PostgreSQL 中儲存電話號碼?
假設我想將電話號碼儲存在數據庫中。我可以接受來自美國以外的電話號碼。我將如何儲存這些電話號碼?
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)