In SQL Server (e Azure), T-SQL DATALENGTH()
La funzione restituisce il numero di byte utilizzati per rappresentare qualsiasi espressione.
Ad esempio:
SELECT DATALENGTH('Lit');
Risultato:
3
In questo caso, ci sono 3 byte nella stringa Lit
.
Tuttavia, questo è un semplice esempio. I risultati possono avere un aspetto molto diverso, a seconda del tipo di dati.
Nell'esempio sopra, abbiamo visto che ci sono 3 byte nella parola Lit
. Questo è anche il numero esatto di caratteri nella stringa. Ma se restituiamo la stessa parola da una colonna in un database, potremmo ottenere un risultato diverso. Ad esempio, questo:
SELECT ArtistName, DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Risultato:
ArtistName DataLength ---------- ---------- Lit 6
In questo caso la lunghezza dei dati è 6.
Il motivo è perché, in questo particolare database, la colonna ha un nvarchar(255) tipo di dati. Il nvarchar il tipo di dati è una stringa unicode, che memorizza 2 byte per carattere (che raddoppia effettivamente la lunghezza dei dati). Se la colonna avesse invece utilizzato varchar(255) avrebbe una lunghezza di dati di 3. Tuttavia, se dicesse, char(25) la stringa dovrebbe avere una lunghezza di dati di 25.
Inoltre, se in precedenza era stato char(25) ma è stato poi convertito in varchar(255) avrebbe comunque una lunghezza dati di 255.
Tuttavia, in tutti i casi, il LEN()
funzione avrebbe restituito 3.
Spazi vuoti finali
Il DATALENGTH()
la funzione conta gli spazi finali (ad es. spazi alla fine della stringa, tabulazioni, ritorni a capo, ecc.).
Esempio:
SELECT DATALENGTH('Lit');
Risultato:
4
In questo esempio ho semplicemente aggiunto uno spazio alla fine della stringa. Questa è un'altra delle differenze tra LEN()
e DATALENGTH()
.
Puoi vedere esempi di LEN()
e DATALENGTH()
fianco a fianco in LEN()
rispetto a DATALENGTH()
.
Tipo di reso
Il DATALENGTH()
la funzione restituisce un tipo di dati int , a meno che l'espressione non sia varchar(max) , nvarchar(max) o varbinary(max) , nel qual caso restituisce bigint .