|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: May 2005
Città: L'aquila
Messaggi: 182
|
Numeri telefonici in sql ....
Salve a tutti!
Sto realizzando una basi di dati che contiene dei numeri telefonici. Andando ad inserire i numeri mi sono accorto che lo zero iniziale dei numeri fissi non me lo memorizza,dato che il campo l'ho dichiarato come NUMERIC(10,0).Esiste per caso un tipo di campo particolare per i numeri telefonici?? Sapete per caso dirmi come posso risolvere questo piccolo inconveniente??? Grazie a tutti per eventuali risposte :-> |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
A mio avviso l'unico modo è mettere i numeri in un campo varchar, così non ti perde niente.
Altre soluzioni stanno alla fantasia (ad es. aggiungi un campo numerico chiamato ZERI_INIZIALI e ci scrivi il numero di zeri che devono andare davanti al numero, 0 se non ce ne sono). |
![]() |
![]() |
![]() |
#3 | |
Messaggi: n/a
|
Quote:
|
|
![]() |
![]() |
#4 | |
Member
Iscritto dal: May 2005
Città: L'aquila
Messaggi: 182
|
Quote:
Intendi dire di creare un dominio contenente tutti gli zeri e ogni volta creare una procedura che me lo richiama???? Credo che mi convenga il consiglio dato da entrambi,renderlo di tipo varchar... Grazie a tutti |
|
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Jan 2006
Città: Roma Caput Mundi
Messaggi: 22
|
Ti conviene dichiararlo come varchar. Alla fine non sono veri e propri numeri e con lo 0 davanti diviene un problema
![]() Poi in fondo non ti cambia nulla metterlo come campo testo oppure hai problemi per le query? |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Quote:
Esempio: hai un numero 010-1234567, ora avresti nel DB NUMERO=101234567 (il primo zero è perso) se aggiungi il campo ZERI hai NUMERO=101234567 (lo stesso) ZERI=1 (il numero di zeri che dovrai aggiungere davanti al numero quando ti servirà). Se fosse un numero 00324567 avresti NUMERO=324567 ZERI=2 e infine, per 3381234567 NUMERO=3381234567 ZERI=0 Puoi usare il varchar come ti avevo già detto, dipende dall'applicazione e dalla quantità di dati che ci metti. Se non erro il varchar (almeno in mysql) occupa una dimensione pari alla dimensione del contenuto +1 (un tipico numero di cell italiano, compreso di prefisso, è di circa 10 cifre, quindi occupa 10bytes+1). Se usi un long, mi pare siano 8 bytes, +1 per il numero degli zeri, quindi 9 bytes. Risparmi circa 2 bytes a numero, ma se metti anche il prefisso internazionale risparmi fino a 6 bytes a numero. In più dovrebbe essere molto più veloce la ricerca per numeri che non per stringhe. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:45.