ধরে নেওয়া যাক আমি একটি ডাটাবেসে ফোন নম্বর সংরক্ষণ করতে চাই। আমি মার্কিন যুক্তরাষ্ট্রের বাইরের ফোন নম্বরগুলি গ্রহণ করতে পারি। আমি কীভাবে এই ফোন নম্বরগুলি সঞ্চয় করতে যাব?
ধরে নেওয়া যাক আমি একটি ডাটাবেসে ফোন নম্বর সংরক্ষণ করতে চাই। আমি মার্কিন যুক্তরাষ্ট্রের বাইরের ফোন নম্বরগুলি গ্রহণ করতে পারি। আমি কীভাবে এই ফোন নম্বরগুলি সঞ্চয় করতে যাব?
উত্তর:
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)