Condividi
Campo int non tronca valore più lungo di N
Desidero se possibile avere un chiarimento sulla lunghezza specificata per i campi di tipo int in MySql. Come si è soliti fare quando specifichiamo un campo int o varchar ne indichiamo anche la lunghezza, in questo modo
int(5)
varchar(5)
Ma se io provo ad inserire il valore 123456 mentre nel varchar questo viene troncato al quinto carattere, il campo intero invece non lo tronca, come mai? Che senso ha allora specificare la lunghezza per gli interi?
Risolta
5
MySql
01-04-2019
2 Risposte
732 Visite
+1
Risposte ( 2 approvate )
Il valore N specificato nella dichiarazione del tipo INT non ne indica la dimensione del campo, bensì la lunghezza di visualizzazione, se ad es. tu scrivi int(5) ed inserirsci un valore di 4 cifre, esso sarà visualizzato sempre con 5 caratteri ed il numero/i mancanti saranno riempiti con degli spazi vuoti (o con degli zeri se specificato diversamente, filled riempimento per intenderci).
Come dice il collega Michele, questo è un errore comunissimo, in tanti intendono la dimensione e non la visualizzazione, ma non è così, quando dichiari un intero in MySql avrai sempre e solo questo:
INT intero di 4 byte da -2.147.483.648 a +2.147.483.648
N in
INT(N)
, che indica la lunghezza di visualizzazione del campo e non la sua dimensione; questo è stato molto fuorviante per tantissimi utenti, a causa di questa sintassi praticamente uguale a quella conVARCHAR(N)
, viene (a ragione) spesso frainteso.La dimensione di un INT in MySql è di 4 byte, e specificarne la lunghezza è praticamente privo di significato per tutte le applicazioni.
Questo vale anche per i tipi:
TINYINT
,SMALLINT
,MEDIUMINT
,INT
,BIGINT
.