มีมาตรฐานในการจัดเก็บหมายเลขโทรศัพท์ปกติในฐานข้อมูลหรือไม่?


96

โครงสร้างข้อมูลที่ดีในการจัดเก็บหมายเลขโทรศัพท์ในช่องฐานข้อมูลคืออะไร? ฉันกำลังมองหาสิ่งที่ยืดหยุ่นพอที่จะจัดการกับหมายเลขระหว่างประเทศและยังเป็นสิ่งที่ช่วยให้สามารถสอบถามส่วนต่างๆของหมายเลขได้อย่างมีประสิทธิภาพ

แก้ไข:เพื่อชี้แจงกรณีการใช้งานที่นี่: ขณะนี้ฉันเก็บหมายเลขไว้ในช่อง varchar เดียวและฉันทิ้งไว้ตามที่ลูกค้าป้อน จากนั้นเมื่อต้องการหมายเลขตามรหัสฉันจะทำให้เป็นปกติ ปัญหาคือถ้าฉันต้องการค้นหาสองสามล้านแถวเพื่อค้นหาหมายเลขโทรศัพท์ที่ตรงกันมันเกี่ยวข้องกับฟังก์ชันเช่น

where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)

ซึ่งไร้ประสิทธิภาพอย่างมาก นอกจากนี้การค้นหาที่กำลังมองหาสิ่งต่างๆเช่นรหัสพื้นที่ยังกลายเป็นเรื่องยุ่งยากมากเมื่อเป็นเพียงช่อง varchar เดียว

[แก้ไข]

มีคนให้คำแนะนำดีๆมากมายที่นี่ขอบคุณ! ในการอัปเดตนี่คือสิ่งที่ฉันกำลังทำอยู่ตอนนี้: ฉันยังคงเก็บตัวเลขไว้ตรงตามที่ป้อนไว้ในฟิลด์ varchar แต่แทนที่จะทำให้สิ่งต่าง ๆ เป็นปกติในเวลาสืบค้นฉันมีทริกเกอร์ที่ทำงานทั้งหมดเมื่อมีการแทรกระเบียน หรือปรับปรุง ดังนั้นฉันจึงมี ints หรือ bigints สำหรับส่วนต่างๆที่ฉันต้องการค้นหาและฟิลด์เหล่านั้นจะถูกจัดทำดัชนีเพื่อให้การสืบค้นทำงานเร็วขึ้น


คำตอบที่ร่วมสมัยเพื่อคำถามคือที่นี่ - stackoverflow.com/a/51761170/968003 ความสำคัญของมัน - ใช้ RFC 3966 สำหรับการจัดเก็บและ libphonenumber สำหรับการแยกวิเคราะห์ / ตรวจสอบความถูกต้อง
Alex Klaus

คำตอบ:


81

ประการแรกนอกเหนือจากรหัสประเทศไม่มีมาตรฐานที่แท้จริง สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือจดจำด้วยรหัสประเทศว่าหมายเลขโทรศัพท์ใดเป็นของประเทศใดและจัดการกับหมายเลขที่เหลือตามรูปแบบของประเทศนั้น ๆ

อย่างไรก็ตามโดยทั่วไปอุปกรณ์โทรศัพท์และอุปกรณ์ดังกล่าวเป็นมาตรฐานดังนั้นคุณจึงสามารถแบ่งหมายเลขโทรศัพท์ที่ระบุออกเป็นส่วนประกอบต่อไปนี้ได้เกือบตลอดเวลา

  • C รหัสประเทศ 1-10 หลัก (ตอนนี้ไม่เกิน 4 หลัก แต่อาจมีการเปลี่ยนแปลง)
  • รหัสพื้นที่ (จังหวัด / รัฐ / ภูมิภาค) รหัส 0-10 หลัก (จริงๆแล้วอาจต้องการเขตข้อมูลภูมิภาคและเขตข้อมูลพื้นที่แยกจากกันแทนที่จะเป็นรหัสพื้นที่เดียว)
  • E Exchange (คำนำหน้าหรือสวิตช์) รหัส 0-10 หลัก
  • L หมายเลขบรรทัด 1-10 หลัก

ด้วยวิธีนี้คุณสามารถแยกตัวเลขที่คุณสามารถค้นหาได้เช่นคนที่อาจอยู่ใกล้กันเนื่องจากมีประเทศพื้นที่และรหัสแลกเปลี่ยนเดียวกัน ด้วยโทรศัพท์มือถือที่ไม่ใช่สิ่งที่คุณสามารถวางใจได้อีกต่อไป

นอกจากนี้ในแต่ละประเทศยังมีมาตรฐานที่แตกต่างกัน คุณสามารถพึ่งพา EEE-LLLL (AAA) ในสหรัฐอเมริกาได้เสมอ แต่ในประเทศอื่นคุณอาจมีการแลกเปลี่ยนในเมือง (AAA) EE-LLL และเพียงแค่ต่อหมายเลขในพื้นที่ชนบท (AAA) LLLL คุณจะต้องเริ่มต้นที่ด้านบนสุดในโครงสร้างของรูปแบบบางอย่างและจัดรูปแบบตามที่คุณมีข้อมูล ตัวอย่างเช่นรหัสประเทศ 0 มีรูปแบบที่ทราบสำหรับหมายเลขอื่น ๆ แต่สำหรับรหัสประเทศ 5432 คุณอาจต้องตรวจสอบรหัสพื้นที่ก่อนจึงจะเข้าใจหมายเลขที่เหลือ

คุณอาจต้องการจัดการกับvanityตัวเลขเช่น(800) Lucky-Guyซึ่งต้องจำไว้ว่าหากเป็นหมายเลขในสหรัฐอเมริกามีตัวเลขมากเกินไป (และคุณอาจต้องเป็นตัวแทนทั้งหมดเพื่อการโฆษณาหรือวัตถุประสงค์อื่น ๆ ) และในสหรัฐอเมริกาตัวอักษรจะจับคู่กับ ตัวเลขต่างจากในเยอรมนี

คุณอาจต้องการจัดเก็บหมายเลขทั้งหมดแยกกันเป็นช่องข้อความ (ด้วยการทำให้เป็นสากล) เพื่อให้คุณสามารถย้อนกลับในภายหลังและแยกวิเคราะห์ตัวเลขอีกครั้งเมื่อมีการเปลี่ยนแปลงหรือเป็นข้อมูลสำรองในกรณีที่มีคนส่งวิธีการที่ไม่ดีในการแยกวิเคราะห์รูปแบบของประเทศใดประเทศหนึ่ง และสูญเสียข้อมูล


1
ทราบถึงการตรวจสอบความถูกต้องของ JavaScript ที่ดีในการลองตรวจสอบสิ่งนี้หรือไม่?
cmcculloh

6
E164 กำหนดขีด จำกัด ที่เข้มงวดมากขึ้นสำหรับความยาวของตัวเลข: 1-3 สำหรับประเทศและความยาวสูงสุดที่ 15 สิ่งนี้จะไม่เปลี่ยนแปลงในเวลาใด ๆ ในเร็ว ๆ นี้เนื่องจากรู้จักระบบโทรศัพท์ทั่วโลก
รวย

ความยาวที่คุณระบุดูเหมือนว่าตาม ITU-T E.164 ผิดทั้งหมด จะเป็นประโยชน์หากคุณสามารถโพสต์ลิงก์ไปยังเอกสารมาตรฐานที่คุณได้รับข้อมูลของคุณมาหรืออธิบายว่าเหตุใดจึงใช้ E.164 ไม่ได้
Abtin Forouzandeh

5
@Abtin - ไม่ใช่ทุกระบบโทรศัพท์ที่สอดคล้องกับ ITU-T E.164 อย่างไรก็ตามพวกเขาส่วนใหญ่ทำและคุ้มค่ากับการชั่งน้ำหนักทางเลือกระหว่างการปฏิบัติตามมาตรฐานและการป้องกันไม่ให้คนบางคนออกไปหรือก้าวข้ามสิ่งที่มาตรฐานกล่าวและยอมรับทุกคน โปรดทราบว่า E.164 อาจถูกมองว่าเป็นชุดย่อยของโครงร่างข้างต้น อย่างไรก็ตามฉันเชื่อว่ารูปแบบที่ดีที่สุดคืออะไรก็ตามที่ผู้ใช้ป้อนอย่างแน่นอนจากนั้นจึงมีอัลกอริทึมการแยกวิเคราะห์เพื่อเป็นโทเค็นเมื่อจำเป็นแทนที่จะจัดเก็บรูปแบบโทเค็นไว้ในฐานข้อมูล
Adam Davis

1) สามารถสมมติว่าหมายเลขสากลทั้งหมดสอดคล้องกับการมีส่วนประกอบของ CAE ได้หรือไม่? 2) คุณสามารถสันนิษฐานได้ไหมว่าส่วนประกอบ C เป็นสิ่งเดียวที่แตกต่างกันขึ้นอยู่กับว่าคุณโทรออกจากที่ใด เช่นหมายเลขสหรัฐอเมริกา 850-555-1234 มี A = 850 และ E = 555-1234 จากนั้น C = 1 หากโทรออกจากสหรัฐอเมริกาและ C = 001 หากโทรออกจากสหราชอาณาจักร ชี้ไม่ว่าคุณจะโทรออกจากที่ใด A และ E ไม่ได้เป็นแบบไดนามิก แต่อย่างใดถูกต้อง?
AaronLS

55

KISS - ฉันเบื่อกับเว็บไซต์หลาย ๆ แห่งในสหรัฐอเมริกา พวกเขามีรหัสที่เขียนอย่างชาญฉลาดเพื่อตรวจสอบรหัสไปรษณีย์และหมายเลขโทรศัพท์ เมื่อฉันพิมพ์ข้อมูลการติดต่อภาษานอร์เวย์ที่ถูกต้องสมบูรณ์ฉันพบว่าบ่อยครั้งที่มันถูกปฏิเสธ

ปล่อยให้เป็นสตริงเว้นแต่คุณจะมีความต้องการเฉพาะบางอย่างสำหรับสิ่งที่ก้าวหน้ากว่านี้


ของเก่าที่nvarchar(42)มีการตรวจสอบความถูกต้องได้/^+?[0-9 -\.\(\)#*]{4,41}$/ผลดีมาก!
SandRock

ฉันเห็นด้วย แต่ไม่เห็นด้วยในเวลาเดียวกัน โดยทั่วไปคุณต้องการทำอะไรบางอย่างกับหมายเลขโทรศัพท์ที่จัดเก็บไว้เช่นแสดงมัน แทนที่จะไปตามถนนนี้เพื่อพยายามแยกวิเคราะห์ให้เพียงพอที่จะแสดงให้เห็นว่าคุณต้องการอย่างไรฉันควรจัดเก็บในลักษณะที่เป็นมาตรฐาน ตอนนี้ฉันไม่ได้บอกว่าเราควรบังคับใช้วงเล็บรอบรหัสพื้นที่ให้ไกลที่สุด สิ่งที่ฉันกำลังพูดคือตัวเลขทั้งหมดไม่มีขีดคั่นเป็นต้น
The Muffin Man

4
ฉันเชื่อว่าหมายเลขโทรศัพท์ควรได้รับการแยกวิเคราะห์ก่อนจัดเก็บดังนั้นจึงสามารถตรวจสอบและจัดเก็บได้ด้วยวิธีที่เป็นมาตรฐาน แยกระหว่างประเทศและการจัดรูปแบบของ phonenumbers เป็นไปได้อย่างสมบูรณ์แบบด้วยgooglei18n / libphonenumber
Roel

21

หน้าวิกิพีเดีย E.164ควรจะบอกคุณทุกอย่างที่คุณจำเป็นต้องรู้


3
ไม่มาตรฐานดังกล่าวเป็นเพียงการกำหนดโครงสร้างของหมายเลขโทรศัพท์ (ประกอบด้วยตัวเลขสามตัว) แต่ไม่ได้ระบุว่าจะแสดงและ / หรือจัดเก็บอย่างไร ฉันพูดมาตรฐานหรือเปล่า? ฉันหมายถึงคำแนะนำ
BlueWizard

8

นี่คือโครงสร้างที่ฉันเสนอขอขอบคุณสำหรับความคิดเห็น:

ฟิลด์ฐานข้อมูลโทรศัพท์ควรเป็น varchar (42) ที่มีรูปแบบต่อไปนี้:

CountryCode - หมายเลข x นามสกุล

ตัวอย่างเช่นในสหรัฐอเมริกาเราสามารถมี:

1-2125551234x1234

ซึ่งจะแสดงหมายเลขสหรัฐอเมริกา (รหัสประเทศ 1) พร้อมรหัสพื้นที่ / หมายเลข (212) 555 1234 และส่วนขยาย 1234

การแยกรหัสประเทศด้วยเครื่องหมายขีดกลางทำให้รหัสประเทศชัดเจนสำหรับผู้ที่กำลังอ่านข้อมูล สิ่งนี้ไม่จำเป็นอย่างยิ่งเนื่องจากรหัสประเทศคือ " รหัสนำหน้า " (คุณสามารถอ่านได้จากซ้ายไปขวาและคุณจะสามารถระบุประเทศได้อย่างชัดเจน) แต่เนื่องจากรหัสประเทศมีความยาวต่างกัน (ระหว่าง 1 ถึง 4 อักขระในขณะนี้) คุณจึงไม่สามารถระบุรหัสประเทศได้อย่างรวดเร็วเว้นแต่คุณจะใช้ตัวคั่นบางประเภท

ฉันใช้ "x" เพื่อแยกส่วนขยายเพราะไม่เช่นนั้นมันจะเป็นไปไม่ได้จริงๆ (ในหลาย ๆ กรณี) ที่จะคิดออกว่าตัวเลขใดเป็นส่วนขยาย

ด้วยวิธีนี้คุณสามารถจัดเก็บหมายเลขทั้งหมดรวมถึงรหัสประเทศและส่วนขยายในช่องฐานข้อมูลเดียวซึ่งคุณสามารถใช้เพื่อเร่งความเร็วการสืบค้นของคุณแทนที่จะเข้าร่วมในฟังก์ชันที่ผู้ใช้กำหนดเองอย่างที่คุณเคยทำมาอย่างเจ็บปวด .

ทำไมฉันถึงเลือก varchar (42) ก่อนอื่นหมายเลขโทรศัพท์ระหว่างประเทศจะมีความยาวแตกต่างกันดังนั้น "var" ฉันกำลังจัดเก็บเครื่องหมายขีดและเครื่องหมาย "x" ซึ่งจะอธิบายถึง "ถ่าน" และอย่างไรก็ตามคุณจะไม่ใช้เลขคณิตจำนวนเต็มในหมายเลขโทรศัพท์ (ฉันเดา) ดังนั้นจึงไม่ค่อยมีเหตุผลที่จะพยายามใช้ประเภทตัวเลข . สำหรับความยาว 42 ฉันใช้ความยาวสูงสุดที่เป็นไปได้ของฟิลด์ทั้งหมดที่เพิ่มขึ้นตามคำตอบของอดัมเดวิสและเพิ่ม 2 สำหรับเส้นประและ "x"


7

ค้นหา E.164 โดยทั่วไปคุณจะจัดเก็บหมายเลขโทรศัพท์เป็นรหัสโดยขึ้นต้นด้วยคำนำหน้าประเทศและคำต่อท้าย pbx ที่เป็นทางเลือก การแสดงผลเป็นปัญหาการแปล สามารถทำการตรวจสอบความถูกต้องได้ แต่ก็เป็นปัญหาในการแปลภาษา (ตามคำนำหน้าประเทศ)

ตัวอย่างเช่น + 12125551212 + 202 จะถูกจัดรูปแบบในภาษา en_US เป็น (212) 555-1212 x202 มันจะมีรูปแบบอื่นในen_GBหรือde_DE.

มีข้อมูลเกี่ยวกับ ITU-T E.164 อยู่เล็กน้อย แต่ค่อนข้างคลุมเครือ


6

โดยส่วนตัวแล้วฉันชอบแนวคิดในการจัดเก็บหมายเลขโทรศัพท์ varchar แบบปกติ (เช่น 9991234567) จากนั้นจัดรูปแบบหมายเลขโทรศัพท์นั้นแบบอินไลน์ตามที่คุณแสดง

วิธีนี้ข้อมูลทั้งหมดในฐานข้อมูลของคุณ "สะอาด" และไม่มีการจัดรูปแบบ


4

การจัดเก็บ

โทรศัพท์เก็บในRFC 3966 (ชอบ+1-202-555-0252, +1-202-555-7166;ext=22) ข้อแตกต่างที่สำคัญจากE.164คือ

  • ไม่จำกัดความยาว
  • การสนับสนุนส่วนขยาย

เพื่อเพิ่มประสิทธิภาพการทำงานของมุมมองให้จัดเก็บโทรศัพท์ในรูปแบบแห่งชาติ / นานาชาติถัดจากฟิลด์ RFC 3966

อย่าเก็บรหัสประเทศไว้ในช่องแยกต่างหากเว้นแต่คุณจะมีเหตุผลที่สำคัญสำหรับเรื่องนั้น ทำไม? เพราะคุณไม่ควรถามรหัสประเทศบน UI

ส่วนใหญ่ผู้คนจะเข้าโทรศัพท์เมื่อพวกเขาได้ยิน เช่นหากรูปแบบภายในเครื่องจะเริ่มจาก0หรือ8ผู้ใช้จะทำการแปลงตัวเลขในส่วนหัว (เช่น " ตกลงอย่าพิมพ์" 0 "เลือกประเทศแล้วพิมพ์ส่วนที่เหลือ คนพูดในช่องนี้ ")

การแยกวิเคราะห์

Google พร้อมดูแลคุณและคุณสามารถตรวจสอบและแยกวิเคราะห์หมายเลขโทรศัพท์ใดก็ได้โดยใช้ไลบรารีlibphonenumber มีพอร์ตสำหรับเกือบทุกภาษา

ดังนั้นให้ผู้ใช้ป้อน " 0449053501" หรือ " 04 4905 3501" หรือ " (04) 4905 3501" เครื่องมือจะหาส่วนที่เหลือให้คุณ

ดูการสาธิตอย่างเป็นทางการเพื่อรับความรู้สึกว่ามันช่วยได้มากแค่ไหน



3

โอเคตามข้อมูลในหน้านี้นี่คือจุดเริ่มต้นของตัวตรวจสอบหมายเลขโทรศัพท์ระหว่างประเทศ:

function validatePhone(phoneNumber) {
    var valid = true;
    var stripped = phoneNumber.replace(/[\(\)\.\-\ \+\x]/g, '');    

    if(phoneNumber == ""){
        valid = false;
    }else if (isNaN(parseInt(stripped))) {
        valid = false;
    }else if (stripped.length > 40) {
        valid = false;
    }
    return valid;
}

อิงตามสคริปต์จากหน้านี้อย่างหลวม ๆ : http://www.webcheatsheet.com/javascript/form_validation.php


2

มาตรฐานสำหรับการจัดรูปแบบตัวเลขคือe.164คุณควรจัดเก็บตัวเลขในรูปแบบนี้เสมอ คุณไม่ควรอนุญาตให้ใช้หมายเลขต่อในช่องเดียวกันกับหมายเลขโทรศัพท์โดยควรจัดเก็บแยกกัน สำหรับตัวเลขและตัวอักษรและตัวเลขมันขึ้นอยู่กับว่าคุณจะทำอะไรกับข้อมูลนั้น


1

ฉันคิดว่าข้อความอิสระ (อาจจะเป็น varchar (25)) เป็นมาตรฐานที่ใช้กันอย่างแพร่หลาย ซึ่งจะอนุญาตให้ใช้รูปแบบใดก็ได้ทั้งในประเทศหรือต่างประเทศ

ฉันเดาว่าปัจจัยผลักดันหลักอาจเป็นวิธีที่คุณค้นหาตัวเลขเหล่านี้และสิ่งที่คุณกำลังทำกับพวกเขา


สิ่งนี้พลาดประเด็นของคำถามซึ่งเป็นการกำหนดมาตรฐานเนื้อหาของฟิลด์ DB เพื่อให้แน่ใจว่ามีการจับคู่ที่ไม่ซ้ำกัน ฉันจะแน่ใจได้อย่างไรว่าเมื่อฉันค้นหาหมายเลขโทรศัพท์ 800-555-1212 ว่าตรงกันว่าผู้ใช้สามารถใส่ "(800) 555-1212", "+1.800.555.1212" หรือค่าอื่นใดที่เทียบเท่าได้ นั่นคือความท้าทายที่กำลังได้รับการแก้ไข
Irongaze.com

1

ฉันพบว่าเว็บฟอร์มส่วนใหญ่อนุญาตอย่างถูกต้องสำหรับรหัสประเทศรหัสพื้นที่จากนั้นตัวเลข 7 หลักที่เหลือ แต่มักจะลืมอนุญาตให้ป้อนส่วนขยาย สิ่งนี้มักจะลงเอยด้วยการพูดด้วยความโกรธเนื่องจากที่ทำงานเราไม่มีพนักงานต้อนรับและคนต่อของฉัน # จำเป็นต้องติดต่อฉัน


1

ฉันพบว่าเว็บฟอร์มส่วนใหญ่อนุญาตอย่างถูกต้องสำหรับรหัสประเทศรหัสพื้นที่จากนั้นตัวเลข 7 หลักที่เหลือ แต่มักจะลืมอนุญาตให้ป้อนส่วนขยาย สิ่งนี้มักจะลงเอยด้วยการพูดด้วยความโกรธเนื่องจากที่ทำงานเราไม่มีพนักงานต้อนรับและคนต่อของฉัน # จำเป็นต้องติดต่อฉัน

ฉันจะต้องตรวจสอบ แต่ฉันคิดว่าสคีมา DB ของเราคล้ายกัน เรามีรหัสประเทศ (อาจเป็นค่าเริ่มต้นของสหรัฐอเมริกาไม่แน่ใจ) รหัสพื้นที่ 7 หลักและนามสกุล


1

สิ่งที่เกี่ยวกับการจัดเก็บคอลัมน์ freetext ที่แสดงหมายเลขโทรศัพท์รุ่นที่ใช้งานง่ายจากนั้นเป็นเวอร์ชันมาตรฐานที่ลบช่องว่างวงเล็บและขยาย '+' ตัวอย่างเช่น:

เป็นมิตรกับผู้ใช้: +44 (0) 181 4642542

ปกติ: 00441814642542


10
+44 (0) 181 4642542 หมายถึงเป็นมิตรกับใครกันแน่? ผู้ใช้ในสหราชอาณาจักรที่อาจไม่รู้ว่าจะต้องทำอย่างไรกับ +44 หากไม่คุ้นเคยกับการโทรระหว่างประเทศหรือผู้ใช้ต่างประเทศที่ไม่รู้ว่าควรจะทิ้ง (0)?
Mark Baker

0

ฉันจะไปหาฟิลด์ freetext และฟิลด์ที่มีหมายเลขโทรศัพท์ที่เป็นตัวเลขเท่านั้น ฉันจะปล่อยให้เป็นตัวแทนของหมายเลขโทรศัพท์แก่ผู้ใช้และใช้ฟิลด์ที่ทำให้เป็นมาตรฐานเฉพาะสำหรับการเปรียบเทียบหมายเลขโทรศัพท์ในแอปพลิเคชันที่ใช้ TAPI หรือเมื่อพยายามค้นหารายการสองรายการในสมุดโทรศัพท์ แน่นอนว่าการจัดหาโครงร่างรายการที่เพิ่มข้อมูลอัจฉริยะให้กับผู้ใช้เช่นเขตข้อมูลแยกต่างหากสำหรับรหัสประเทศ (ถ้าจำเป็น) รหัสพื้นที่หมายเลขฐานและส่วนขยาย


0

คุณได้รับหมายเลขโทรศัพท์จากที่ไหน? หากคุณได้รับจากส่วนหนึ่งของเครือข่ายโทรศัพท์คุณจะได้รับสตริงของตัวเลขและประเภทตัวเลขและแผนเช่น

441234567890 ประเภท / แผน 0x11 (ซึ่งหมายถึงสากล E.164)

ในกรณีส่วนใหญ่สิ่งที่ดีที่สุดที่ต้องทำคือจัดเก็บสิ่งเหล่านี้ทั้งหมดตามที่เป็นอยู่และทำให้เป็นปกติสำหรับการแสดงผลแม้ว่าการจัดเก็บตัวเลขที่เป็นมาตรฐานจะมีประโยชน์หากคุณต้องการใช้เป็นคีย์เฉพาะหรือคล้ายกัน


0

เป็นมิตรกับผู้ใช้: +44 (0) 181 464 2542 ปกติ: 00441814642542

(0) ไม่ถูกต้องในรูปแบบสากล ดูมาตรฐาน ITU-T E.123

รูปแบบ "normalized" จะไม่มีประโยชน์สำหรับผู้อ่านในสหรัฐอเมริกาเนื่องจากใช้ 011 สำหรับการเข้าถึงระหว่างประเทศ


0

ฉันใช้ 3 วิธีในการจัดเก็บหมายเลขโทรศัพท์ขึ้นอยู่กับความต้องการในการใช้งาน

  1. หากหมายเลขถูกเก็บไว้เพื่อการเรียกค้นโดยมนุษย์เท่านั้นและจะไม่ถูกใช้สำหรับการค้นหาที่เก็บไว้ในฟิลด์ประเภทสตริงตรงตามที่ผู้ใช้ป้อน
  2. หากกำลังจะค้นหาฟิลด์อักขระพิเศษใด ๆ เช่น + ช่องว่างและวงเล็บเป็นต้นจะถูกลบออกและจำนวนที่เหลือจะถูกเก็บไว้ในฟิลด์ประเภทสตริง
  3. สุดท้ายหากจะใช้หมายเลขโทรศัพท์โดยแอปพลิเคชันคอมพิวเตอร์ / โทรศัพท์ในกรณีนี้จะต้องป้อนและจัดเก็บเป็นหมายเลขโทรศัพท์ที่ถูกต้องที่ระบบใช้งานได้แน่นอนว่าตัวเลือกนี้เป็นรหัสที่ยากที่สุด สำหรับ.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.