Telefon için SQL varchar'da (uzunluk) düşünmem gereken dünya çapında mümkün olan en uzun telefon numarası nedir?


200

Telefon varchar(length)için SQL'de düşünmem gereken dünya çapında mümkün olan en uzun telefon numarası nedir ?

hususlar:

  • ülke kodu için +
  • () alan kodu için
  • Uzantı uzantısı için x + 6 sayı (bu nedenle 8 {space} yapın)
  • gruplar arasındaki boşluklar (örneğin, Amerikan telefonlarında + x xxx xxx xxxx = 3 boşluk)
  • işte burada senin yardımına ihtiyacım var, dünya çapında olmasını istiyorum

Şimdi özel durumumda, kartlara vb. İhtiyacım olmadığını düşünün. Numara ülke kodu ile başlar ve dahili numara ile biter, Faks / Telefon vb.


1
Ben sayı uzun bir değere dönüştürmek iyi bir çözüm olacağını düşünüyorum, ve sadece 64bit alan gerekir, yıllardır bunu kullanıyorum, sorun yok


1
@MattDiPasquale burada zaten bahsetti , ama teşekkürler!
Shimmy Weitzhandler

2
Doğru, ama bu cevap verdiğim bağlantıyı içermiyordu. Rica ederim. :-)
ma11hew28

Yanıtlar:


79

Eğer bir varchar (30) ve bir varchar (100) arasında genel bir fark olmadığını düşünürsek, her birinde sadece 20 karakter saklıyorsanız, dikkatli olun ve hata yapın ve sadece 50 yapın.


26
Sadece bilgi için: peki ne zaman ek yük var mı? lütfen cevabınıza bir kaynak ekleyin, böylece devam edebilir ve ondan temel bilgileri öğrenebiliriz.
Shimmy Weitzhandler

6
Bunun olması gerektiğini biliyorum, ama her zaman değil. MySQL'de (örneğin) tam uzunluk, sıralama için kullanılır. En azından biraz çaba sarf etmek en iyisidir.
Morgan Tocker

15
İki sütun boyutu arasında depolama boyutu farkı yoktur . Veritabanınıza bağlı olarak, büyük olasılıkla veya önemli ölçüde bir ek yük vardır. Örneğin SQL Server, veri sayfası boyutlarını tahmin etme ve erişimi ve hizalamayı bu şekilde optimize etme yeteneğini kaybeder. Her zaman olduğu gibi test edin.
Matt Enright

16
Erken optimizasyon tüm kötülüklerin köküdür.
Harindaka

79
Platitudinous genellemeler daha da kötüdür. Optimizasyonu göz önünde bulundurarak bir sistem tasarlamak asla kötü değildir - bir kişi gereksiz, fark edilmeyen ve küçük verimliliklere aşırı zaman ayırdığında kötülük olur.
jbowman

167

'+', '()', '-', boşluklar ve neyin olduğu gibi şeyleri saklamadığınızı varsayarsak (ve neden, neden yerel geleneklere ve ağ dağıtımlarına göre değişebilecek sunumsal kaygılardır) her neyse), uluslararası telefon şebekesi (çoğu ulusal ağın bağlı olduğu ) için ITU-T tavsiyesi E.164 , numaranın tamamının (ülke kodu dahil ancak dışarı arama için gerekli uluslararası arama öneki gibi önekler içermediğini , ülkeden ülkeye değişen veya PBX dahili numaralar gibi son ekler dahil) en fazla 15 karakter olabilir .

Arama önekleri arayan kişiye değil, arayan kişiye bağlıdır ve bu nedenle (birçok durumda) bir telefon numarasıyla birlikte saklanmamalıdır. Veritabanı kişisel bir adres defteri için verileri depolarsa (bu durumda uluslararası arama önekini saklamak mantıklıdır), uğraşmanız gereken en uzun uluslararası önekler ( Wikipedia'ya göre ) şu anda Finlandiya'da 5 basamaktır.

Soneklere gelince, bazı PBX'ler 11 basamağa kadar uzantıyı destekler (yine Wikipedia'ya göre ). PBX dahili numaraları farklı bir arama planının parçası olduğundan (PBX'ler telefon şirketlerinin exchange'lerinden ayrıdır), dahili numaraların, ayırıcı karakterle veya farklı bir sütunda depolayarak telefon numaralarından ayırt edilebilir olması gerekir.


5
Biçim karakterlerini ('+', '(', ')', '-' ve '' gibi) saklamıyorsanız ve farklı ülkelerden numaralar saklıyorsanız, biçimi belirtmek için bir sütun eklemek isteyebilirsiniz numara görüntülendiğinde kullanılacak numara türü.
Trisped

38
Alt satır: 15karakter. Önek ve sonek saklanırsa, alt satır: 5 + 15 + 11 = 31.
AlikElzin-kilaka

3
@MattEnright, bence AlikElzin'in cevabınızdaki yorumunu güncellemelisiniz .
Shimmy Weitzhandler


17

GSM spesifikasyonu 3GPP TS 11.11'de, MSISDN EF'de (6F40) 'arama numarası' için 10 bayt ayrılmıştır. Bu bir telefon numarasının GSM temsilidir ve kullanımı nibble değiştirilir (ve her zaman parantez olasılığı vardır) 22 karakterlik veri bol olmalıdır.

Deneyimlerime göre, açık / kapalı parantezlerin sadece bir örneği var, bu benim için nedenim.


10

Biraz daha kötü, uluslararası aramalar için bir arama kartı kullanıyorum, bu yüzden ABD + hesap # (6 basamak) + pin (4 basamak) + "duraklat" + yukarıda açıkladığınız yerel numara.

Başka durumlar olabileceğinden şüpheleniyorum


2
Çok iyi bir noktaya değindin.
Mesajıma

10
Arama kartı tekrar araması veritabanında olmamalıdır - bu, arama kurallarına göre arama yaparken eklenen bölümdür. Depolanan numaralar, çevirmeyle ilgili herhangi bir bilgi olmadan ISO biçiminde olmalıdır.
TomTom
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.