Utilizzo di dati char e varchar

I tipi di dati char e varchar consentono di archiviare dati composti dai caratteri seguenti:

  • Lettere maiuscole e minuscole, ad esempio a, b e C.

  • Cifre, ad esempio 1, 2 o 3.

  • Caratteri speciali, ad esempio i caratteri @ (chiocciola), & ("e" commerciale) e ! (punto esclamativo).

I dati char o varchar possono essere composti da un singolo carattere o da una stringa di un massimo di 8.000 caratteri nel caso di dati char e di un massimo di 2^31 caratteri nel caso di dati varchar. I tipi di dati varchar possono assumere due forme. I dati varchar possono essere composti da una lunghezza di caratteri massima specificata, ad esempio varchar(6), in cui è possibile archiviare un massimo di sei caratteri. Altrimenti, i dati possono essere nella forma varchar(max),, che consente di aumentare a 2^31 il numero massimo di caratteri che è possibile archiviare con questo tipo di dati. Per ulteriori informazioni su varchar(max),, vedere Utilizzo di tipi di dati per valori di grandi dimensioni.

A ogni valore di dati di tipo char e varchar corrispondono regole di confronto specifiche. Le regole di confronto definiscono attributi specifici come gli schemi di bit utilizzati per la rappresentazione di ogni carattere, i criteri di confronto e la distinzione tra caratteri maiuscoli e minuscoli o accentati e non accentati. A ogni database sono associate regole di confronto predefinite. Quando si definisce una colonna oppure si specifica una costante, a tali elementi vengono assegnate le regole di confronto predefinite del database, a meno che non vengano definite regole di confronto specifiche tramite la clausola COLLATE. Se si uniscono o si confrontano due valori di tipo char o varchar con regole di confronto diverse, le regole di confronto da utilizzare vengono scelte in base alle regole di precedenza.

È necessario che le costanti di tipo carattere siano racchiuse tra virgolette singole (') o doppie ("). È consigliabile racchiudere tali costanti tra virgolette singole. Quando l'opzione QUOTED IDENTIFIER è impostata su ON, l'utilizzo delle virgolette doppie in alcuni casi non è consentito.

Nell'esempio seguente di Transact-SQL viene impostato un valore per una variabile di tipo carattere:

DECLARE @MyCharVar CHAR(25)
SET @MyCharVar = 'Ricardo Adocicados'

Nel caso di costanti di tipo carattere racchiuse tra virgolette singole che includono una virgoletta singola incorporata, tale virgoletta deve essere rappresentata da due virgolette singole. Ad esempio:

SET @MyCharVar = 'O''Leary'

Se la lunghezza dei dati da archiviare è superiore al numero di caratteri consentiti, i dati vengono troncati. Se, ad esempio, una colonna viene definita come char(10) e all'interno di questa viene archiviato il valore "Stringa di caratteri molto lunga", la stringa di caratteri viene limitata automaticamente a "Stringa di" in SQL Server.

Quando si specifica la clausola NOT NULL, il tipo di dati char è di lunghezza fissa. Se in una colonna NOT NULL di tipo char viene inserito un valore di lunghezza inferiore alla lunghezza della colonna, a destra del valore vengono aggiunti spazi riempitivi fino a ottenere la lunghezza della colonna. Se, ad esempio, una colonna viene definita come char(10) e i dati che si desidera archiviare corrispondono al valore "musica", in SQL Server tali dati vengono archiviati automaticamente come "musica____", dove "_" indica uno spazio vuoto.

Se l'opzione ANSI_PADDING è impostata su ON quando viene creata una colonna NULL di tipo char, la colonna funziona come una colonna NOT NULL di tipo char, ovvero a destra dei dati vengono aggiunti spazi fino a riempirne l'intera lunghezza. Se l'opzione ANSI_PADDING è impostata su OFF quando viene creata una colonna NULL di tipo char, la colonna funziona come una colonna di tipo varchar con l'opzione ANSI_PADDING impostata su OFF, ovvero gli spazi vuoti finali vengono eliminati.

Il tipo di dati varchar è di lunghezza variabile. Ai valori con una lunghezza minore delle dimensioni della colonna non vengono aggiunti spazi vuoti. Se in fase di creazione della colonna l'opzione ANSI_PADDING è impostata su OFF, gli spazi vuoti finali vengono eliminati dai valori di tipo carattere archiviati nella colonna. Se invece l'opzione ANSI_PADDING è impostata su ON, gli spazi vuoti finali non vengono eliminati.

L'interpretazione degli schemi di bit archiviati in una stringa di caratteri è basata sulla tabella codici di MicrosoftSQL Server specificata durante l'installazione. Un oggetto char o varchar può contenere qualsiasi carattere incluso nella tabella codici di SQL Server .

Le applicazioni che utilizzano i driver ODBC SQL Server dalla versione 6.5 o precedente di SQL Server supportano solo un massimo di 255 byte di dati di tipo carattere. Se in queste applicazioni vengono recuperati parametri di tipo carattere di SQL Server 7.0 o versioni successive oppure colonne con set di risultati contenenti più di 255 byte di dati, i dati vengono troncati dopo i primi 255 caratteri.