Qual è il numero di telefono mondiale più lungo possibile che dovrei considerare in SQL varchar (lunghezza) per telefono


200

Qual è il numero di telefono mondiale più lungo possibile che dovrei considerare in SQL varchar(length)per telefono.

considerazioni:

  • + per prefisso internazionale
  • () per prefisso
  • x + 6 numeri per l'estensione di estensione (quindi impostala 8 {spazio})
  • spazi tra i gruppi (ovvero nei telefoni americani + x xxx xxx xxxx = 3 spazi)
  • qui è dove ho bisogno del tuo aiuto, voglio che sia mondiale

Considera che nel mio caso particolare ora, non ho bisogno di carte, ecc. Il numero inizia con il prefisso del paese e termina con l'estensione, non ci sono commenti su fax / telefono, ecc., Né necessità di carte telefoniche.


1
Penso che convertire il numero in un valore lungo sarebbe una buona soluzione, e avrà bisogno solo di 64 bit di spazio, lo sto usando da anni, nessun problema


1
@MattDiPasquale già menzionato qui , ma grazie!
Shimmy Weitzhandler,

2
Giusto, ma quella risposta non includeva il link che ho dato. Prego. :-)
ma11hew28,

Risposte:


79

Bene, considerando che non esiste alcuna differenza aerea tra un varchar (30) e un varchar (100) se si memorizzano solo 20 caratteri in ciascuno, errare con cautela e renderlo solo 50.


26
Solo per conoscenza: quindi quando c'è un sovraccarico? includi una fonte nella tua risposta, in modo che possiamo andare avanti e imparare le basi da essa.
Shimmy Weitzhandler,

6
So che dovrebbe essere il caso, ma non è sempre. In MySQL (ad esempio) viene utilizzata l'intera lunghezza per l'ordinamento. È meglio applicare almeno un minimo sforzo.
Morgan Tocker,

15
Non c'è differenza di dimensioni di archiviazione tra le due dimensioni di colonna. È molto probabile che si verifichi un sovraccarico, significativo o meno, a seconda del database specifico. SQL Server, ad esempio, perde molta capacità di prevedere le dimensioni della pagina dei dati e ottimizzare così gli accessi e l'allineamento. Come sempre, prova.
Matt Enright,

16
L'ottimizzazione prematura è la radice di tutti i mali.
Harindaka,

78
Le generalizzazioni banali sono ancora peggio. Progettare un sistema pensando all'ottimizzazione non è mai un male di per : l'ottimizzazione diventa cattiva quando si dedica una quantità eccessiva di tempo a efficienze non necessarie, impercettibili e minori.
jbowman,

167

Supponendo che non memorizzi cose come '+', '()', '-', spazi e what-have-yous (e perché dovresti, sono problemi di presentazione che potrebbero variare in base alle abitudini locali e alle distribuzioni della rete in ogni caso), la raccomandazione ITU-T E.164 per la rete telefonica internazionale (alla quale la maggior parte delle reti nazionali è collegata) specifica che l'intero numero (incluso il prefisso internazionale, ma non i prefissi come il prefisso internazionale necessario per effettuare la chiamata, che varia da paese a paese, inclusi i suffissi, come i numeri di interno del PBX) deve contenere al massimo 15 caratteri .

I prefissi di chiamata dipendono dal chiamante, non dal chiamante, e quindi non dovrebbero (in molte circostanze) essere memorizzati con un numero di telefono. Se il database memorizza i dati per una rubrica personale (nel qual caso ha senso memorizzare il prefisso di chiamata internazionale), i prefissi internazionali più lunghi che dovresti trattare ( secondo Wikipedia ) sono attualmente a 5 cifre, in Finlandia.

Per quanto riguarda i suffissi, alcuni PBX supportano estensioni fino a 11 cifre (di nuovo, secondo Wikipedia ). Poiché i numeri di interno PBX fanno parte di un diverso piano di selezione (i PBX sono separati dagli scambi delle compagnie telefoniche), i numeri di interno devono essere distinguibili dai numeri di telefono, con un carattere di separazione o memorizzandoli in una colonna diversa.


5
Se non stai memorizzando i caratteri del formato (come '+', '(', ')', '-' e '') e stai memorizzando numeri da nazioni diverse, potresti voler aggiungere una colonna per indicare il formato tipo di numero per quando viene visualizzato il numero.
Trisped

38
Bottom line: 15caratteri. Se si memorizzano prefisso e suffisso, la riga inferiore è: 5 + 15 + 11 = 31.
AlikElzin-Kilaka,

3
@MattEnright, penso che dovresti aggiornare il commento di AlikElzin nella tua risposta.
Shimmy Weitzhandler,


17

Nella specifica GSM 3GPP TS 11.11 , ci sono 10 byte messi da parte in MSISDN EF (6F40) per il "numero di composizione". Dal momento che questa è la rappresentazione GSM di un numero di telefono, e il suo utilizzo è scambiato in modo intelligente, (e c'è sempre la possibilità di parentesi) 22 caratteri di dati dovrebbero essere molti.

Nella mia esperienza, c'è solo un'istanza di parentesi aperte / chiuse, questo è il mio ragionamento per quanto sopra.


10

È un po 'peggio, io uso un biglietto da visita per le chiamate internazionali, quindi il suo numero locale negli Stati Uniti + account # (6 cifre) + pin (4 cifre) + "pausa" + quello che hai descritto sopra.

Sospetto che potrebbero esserci altri casi


2
Hai un ottimo punto. Ho aggiunto alcune righe al mio messaggio, leggi
Shimmy Weitzhandler il

10
La ricomposizione della carta telefonica non dovrebbe essere presente nel database, questa è la parte che viene aggiunta durante la composizione in base alle regole di composizione. I numeri memorizzati devono essere in formato ISO, senza alcuna informazione relativa al quadrante.
TomTom,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.