Apa nomor telepon sedunia terpanjang yang mungkin harus saya pertimbangkan dalam SQL varchar (panjang) untuk telepon


200

Apa nomor telepon sedunia terpanjang yang mungkin harus saya pertimbangkan dalam SQL varchar(length)untuk telepon.

pertimbangan:

  • + untuk kode negara
  • () untuk kode area
  • x + 6 angka untuk ekstensi Ekstensi (jadi buatlah 8 {spasi})
  • spasi antar grup (yaitu di ponsel Amerika + x xxx xxx xxxx = 3 spasi)
  • Di sinilah saya butuh bantuan Anda, saya ingin itu ada di seluruh dunia

Pertimbangkan bahwa dalam kasus khusus saya sekarang, saya tidak perlu kartu dll nomor dimulai dengan kode negara dan diakhiri dengan ekstensi, tidak ada Fax / Telepon dll komentar, atau menelepon barang-barang kartu diperlukan.


1
Saya pikir mengubah angka menjadi nilai panjang akan menjadi solusi yang baik, dan itu akan membutuhkan hanya ruang 64bit, saya telah menggunakan ini selama bertahun-tahun, tidak ada masalah


1
@MattDiPasquale sudah disebutkan di sini , tapi terima kasih!
Shimmy Weitzhandler

2
Benar, tetapi jawaban itu tidak termasuk tautan yang saya berikan. Sama-sama. :-)
ma11hew28

Jawaban:


79

Yah mengingat tidak ada perbedaan overhead antara varchar (30) dan varchar (100) jika Anda hanya menyimpan 20 karakter di masing-masing, sesat di sisi hati-hati dan hanya membuatnya 50.


26
Hanya untuk pengetahuan: jadi kapan ADA overhead? harap sertakan sumber dalam jawaban Anda, sehingga kami dapat melanjutkan dan mempelajari dasar-dasarnya dari itu.
Shimmy Weitzhandler

6
Saya tahu itu yang seharusnya, tetapi tidak selalu demikian. Di MySQL (misalnya) panjang penuh digunakan untuk menyortir. Cara terbaik untuk menerapkan setidaknya upaya minimal.
Morgan Tocker

15
Tidak ada perbedaan ukuran penyimpanan antara dua ukuran kolom. Sangat mungkin ada overhead, signifikan atau sebaliknya, tergantung pada database khusus Anda. SQL Server, misalnya, kehilangan banyak kemampuan untuk memprediksi ukuran halaman data dan mengoptimalkan akses dan penyelarasan dengan demikian. Seperti biasa, tes.
Matt Enright

16
Optimalisasi prematur adalah akar dari semua kejahatan.
Harindaka

78
Generalisasi platitudinous bahkan lebih buruk. Merancang sistem dengan optimisasi dalam pikiran tidak pernah jahat per se - optimasi menjadi jahat ketika seseorang mencurahkan banyak waktu untuk efisiensi yang tidak perlu, tidak terlihat dan kecil.
jbowman

167

Dengan asumsi Anda tidak menyimpan hal-hal seperti '+', '()', '-', spasi dan apa-apa (dan mengapa Anda, itu adalah masalah presentasi yang akan berbeda-beda tergantung pada kebiasaan setempat dan distribusi jaringan Bagaimanapun), rekomendasi ITU-T E.164 untuk jaringan telepon internasional (yang sebagian besar jaringan nasional terhubung melalui) menentukan bahwa seluruh nomor (termasuk kode negara, tetapi tidak termasuk awalan seperti awalan panggilan internasional yang diperlukan untuk panggilan keluar, yang bervariasi dari satu negara ke negara, atau termasuk sufiks, seperti nomor ekstensi PBX) paling banyak 15 karakter .

Awalan panggilan tergantung pada penelepon, bukan callee, dan karenanya tidak (dalam banyak keadaan) harus disimpan dengan nomor telepon. Jika database menyimpan data untuk buku alamat pribadi (dalam hal ini menyimpan awalan panggilan internasional masuk akal), awalan internasional terpanjang yang harus Anda tangani ( menurut Wikipedia ) saat ini 5 digit, di Finlandia.

Sedangkan untuk sufiks, beberapa PBX mendukung hingga 11 digit ekstensi (sekali lagi, menurut Wikipedia ). Karena nomor ekstensi PBX adalah bagian dari rencana panggilan yang berbeda (PBX terpisah dari pertukaran perusahaan telepon), nomor ekstensi harus dapat dibedakan dari nomor telepon, baik dengan karakter pemisah atau dengan menyimpannya dalam kolom yang berbeda.


5
Jika Anda tidak menyimpan karakter format (seperti '+', '(', ')', '-', dan '') dan Anda menyimpan angka dari negara yang berbeda, Anda mungkin ingin menambahkan kolom untuk menunjukkan format jenis nomor ketika nomor ditampilkan.
Dipotong

38
Intinya: 15karakter. Jika menyimpan awalan dan sufiks, intinya adalah: 5 + 15 + 11 = 31.
AlikElzin-kilaka

3
@MattEnright, saya pikir Anda harus memperbarui komentar AlikElzin dalam jawaban Anda.
Shimmy Weitzhandler


17

Dalam spesifikasi GSM 3GPP TS 11.11 , ada 10 byte yang disisihkan dalam EF MSISDN (6F40) untuk 'nomor panggilan'. Karena ini adalah representasi GSM dari nomor telepon, dan penggunaannya adalah nibble swapping, (dan selalu ada kemungkinan tanda kurung) 22 karakter data harus banyak.

Dalam pengalaman saya, hanya ada satu contoh tanda kurung buka / tutup, itulah alasan saya untuk hal di atas.


10

Ini sedikit lebih buruk, saya menggunakan kartu panggil untuk panggilan internasional, jadi nomor lokalnya di AS + akun # (6 digit) + pin (4 digit) + "jeda" + apa yang Anda jelaskan di atas.

Saya menduga mungkin ada kasus lain


2
Anda mendapat poin yang sangat bagus. Saya menambahkan beberapa baris ke pesan saya,
tolong

10
Panggil ulang kartu tidak boleh ada dalam database, meskipun - ini adalah bagian yang ditambahkan ketika melakukan panggilan sesuai dengan aturan panggilan. Nomor yang disimpan harus dalam bentuk ISO, tanpa informasi terkait panggilan.
TomTom
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.