Jaki jest najdłuższy możliwy numer telefonu na świecie, który powinienem rozważyć w varchar SQL (długość) dla telefonu


200

Jaki jest najdłuższy możliwy numer telefonu na świecie, który powinienem rozważyć w SQL varchar(length)dla telefonu.

uwagi:

  • + dla kodu kraju
  • () dla numeru kierunkowego
  • x + 6 liczb dla rozszerzenia rozszerzenia (więc zrób to 8 {spacja})
  • spacje między grupami (tj. w telefonach amerykańskich + x xxx xxx xxxx = 3 spacje)
  • tutaj potrzebuję twojej pomocy, chcę, żeby była na całym świecie

Weź pod uwagę, że w moim szczególnym przypadku nie potrzebuję już kart itp. Numer zaczyna się od numeru kierunkowego kraju i kończy się na numerze wewnętrznym, nie ma komentarzy dotyczących faksu / telefonu itp. Ani kart telefonicznych.


1
Myślę, że konwersja liczby na wartość długą byłaby dobrym rozwiązaniem i będzie wymagała tylko 64-bitowej przestrzeni, korzystam z niej od lat, bez problemów


1
@MattDiPasquale już tu wspomniano , ale dzięki!
Shimmy Weitzhandler,

2
Zgadza się, ale ta odpowiedź nie zawierała podanego przeze mnie linku. Nie ma za co. :-)
ma11hew28

Odpowiedzi:


79

Biorąc pod uwagę, że nie ma różnicy narzutów między varcharem (30) a varcharem (100), jeśli przechowujesz tylko 20 znaków w każdym, zachowaj ostrożność i po prostu dodaj 50.


26
Tylko dla wiedzy: więc kiedy JEST jakikolwiek narzut? prosimy o podanie źródła w swojej odpowiedzi, abyśmy mogli zacząć od niego podstawy.
Shimmy Weitzhandler

6
Wiem, że tak powinno być, ale nie zawsze tak jest. Na przykład w MySQL do sortowania używana jest pełna długość. Najlepiej zastosować przynajmniej minimalny wysiłek.
Morgan Tocker,

15
Nie ma różnicy wielkości pamięci między dwoma rozmiarami kolumn. Bardzo prawdopodobne jest, że narzut, znaczący lub inny, w zależności od konkretnej bazy danych. Na przykład SQL Server traci wiele możliwości przewidywania rozmiarów stron danych i tym samym optymalizacji dostępu i wyrównania. Jak zawsze testuj.
Matt Enright,

16
Przedwczesna optymalizacja jest źródłem wszelkiego zła.
Harindaka,

78
Uogólnione uogólnienia są jeszcze gorsze. Projektowanie systemu z myślą o optymalizacji nigdy nie jest złem per se - optymalizacja staje się złem, gdy poświęca się nadmiernie dużo czasu niepotrzebnym, niezauważalnym i niewielkim usprawnieniom.
jbowman

167

Zakładając, że nie przechowujesz rzeczy takich jak „+”, „()”, „-”, spacje i to, co masz (a dlaczego byś to zrobił), są to problemy związane z prezentacją, które różnią się w zależności od lokalnych zwyczajów i dystrybucji sieci w każdym razie) zalecenie ITU-T E.164 dla międzynarodowej sieci telefonicznej (przez którą podłączonych jest większość sieci krajowych) określa, że ​​cały numer (w tym kod kraju, ale nie zawiera prefiksów, takich jak prefiks połączenia międzynarodowego niezbędny do wybrania numeru, który różni się w zależności od kraju i nie zawiera sufiksów, takich jak numery wewnętrzne PBX, może mieć maksymalnie 15 znaków .

Prefiksy połączeń zależą od dzwoniącego, a nie od odbiorcy, i dlatego nie powinny (w wielu okolicznościach) być przechowywane z numerem telefonu. Jeśli baza danych przechowuje dane osobistej książki adresowej (w takim przypadku przechowywanie prefiksu połączenia międzynarodowego ma sens), najdłuższe prefiksy międzynarodowe, z którymi trzeba będzie się zmierzyć ( według Wikipedii ), mają obecnie 5 cyfr w Finlandii.

Jeśli chodzi o sufiksy, niektóre centrale PBX obsługują rozszerzenia do 11 cyfr (ponownie, zgodnie z Wikipedią ). Ponieważ numery wewnętrzne PBX są częścią innego planu wybierania numerów (centrale PBX są oddzielne od centrali telefonicznych), numery wewnętrzne muszą być odróżnialne od numerów telefonicznych za pomocą znaku separatora lub poprzez przechowywanie ich w innej kolumnie.


5
Jeśli nie przechowujesz znaków formatu (takich jak „+”, „(”, „)”, „-” i „”) i przechowujesz liczby z różnych narodów, możesz dodać kolumnę wskazującą format typ numeru, kiedy numer jest wyświetlany.
Trisped

38
Konkluzja: 15znaki. Jeśli przechowujesz prefiks i sufiks, dolna linia to: 5 + 15 + 11 = 31.
AlikElzin-kilaka

3
@MattEnright, myślę, że powinieneś zaktualizować komentarz AlikElzin w swojej odpowiedzi.
Shimmy Weitzhandler,


17

W specyfikacji GSM 3GPP TS 11.11 w MSISDN EF (6F40) jest 10 bajtów zarezerwowanych na „numer wybierania”. Ponieważ jest to reprezentacja GSM numeru telefonu, a jego użycie jest zamieniane na skubanie ((i zawsze istnieje możliwość nawiasów), 22 znaki danych powinny być wystarczające.

Z mojego doświadczenia wynika, że ​​istnieje tylko jeden przypadek otwarcia / zamknięcia nawiasu, to jest moje uzasadnienie powyższego.


10

Jest trochę gorzej, używam karty telefonicznej do połączeń międzynarodowych, więc jej numer lokalny w USA + numer konta (6 cyfr) + pin (4 cyfry) + „pauza” + to, co opisałeś powyżej.

Podejrzewam, że mogą być inne przypadki


2
Masz bardzo dobry punkt. Dodałem kilka wierszy do mojego msg,
proszę

10
Ponowne wybieranie numeru karty telefonicznej nie powinno jednak znajdować się w bazie danych - jest to część dodawana podczas wybierania zgodnie z regułami wybierania. Zapisane numery powinny być w formie ISO, bez żadnych informacji związanych z wybieraniem numeru.
TomTom,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.