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 )

  1. Giacomo Barrile
    +1
    01-04-2019 12:58:40
    Rispondi

    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

  2. Michele Brughese
    0
    01-04-2019 12:52:00
    Rispondi

    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 con VARCHAR(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.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Nino Belpiano

Nino Belpiano

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva