Giả sử tôi muốn lưu trữ số điện thoại trong cơ sở dữ liệu. Tôi có thể chấp nhận số điện thoại từ bên ngoài Hoa Kỳ. Làm thế nào tôi có thể lưu trữ những số điện thoại này?
Giả sử tôi muốn lưu trữ số điện thoại trong cơ sở dữ liệu. Tôi có thể chấp nhận số điện thoại từ bên ngoài Hoa Kỳ. Làm thế nào tôi có thể lưu trữ những số điện thoại này?
Câu trả lời:
libphonenumber
Khi có thể luôn luôn sử dụng các hình thức kinh điển. Hình thức càng bình thường càng tốt. Nếu có một tiêu chuẩn, sử dụng nó. Đối với vấn đề này, hãy sử dụng libphonenumber của Google , theo proxy của pg-libphonenumber .
CREATE EXTENSION pg_libphonenumber;
Điều này hiện đang cài đặt phone_number
loại có các toán tử so sánh và chức năng. Nó lưu số trong một hình thức kinh điển quốc tế. Đây là sự thỏa hiệp tốt nhất theo ý kiến của tôi.
parse_phone_number('textnumber', 'CountryCode');
Bởi vì chúng tôi có thể biết khi nào các số điện thoại bằng nhau và chúng tôi cung cấp một hình thức bình thường nội bộ, chúng tôi có thể làm điều này ..
SELECT parse_phone_number('03 7010 1234', 'AU') = parse_phone_number('(03) 7010 1234', 'AU');
(trả về đúng). Điều này cũng có nghĩa là nó DISTINCT
hoạt động để chúng tôi có thể làm điều này để có được hiệu ứng mà bạn muốn ở trên.
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
Điều đó đặt vào ..
parse_phone_number
--------------------
+61 3 7010 1234
(1 row)