चलो मान लेते हैं कि मैं एक डेटाबेस में फोन नंबर स्टोर करना चाहता हूं। मैं संयुक्त राज्य के बाहर से फोन नंबर स्वीकार कर सकता हूं। मैं इन फ़ोन नंबरों को कैसे संग्रहीत करूंगा?
चलो मान लेते हैं कि मैं एक डेटाबेस में फोन नंबर स्टोर करना चाहता हूं। मैं संयुक्त राज्य के बाहर से फोन नंबर स्वीकार कर सकता हूं। मैं इन फ़ोन नंबरों को कैसे संग्रहीत करूंगा?
जवाबों:
libphonenumber
जब भी संभव हो हमेशा विहित रूप का उपयोग करें। और अधिक सामान्य रूप बेहतर है। यदि कोई मानक है, तो इसका उपयोग करें। इस समस्या के लिए, चलिए Google के libphonenumber का उपयोग करते हैं , pg-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)