In MySQL, il CHAR_LENGTH() La funzione restituisce la lunghezza di una stringa, misurata in caratteri. MySQL ha anche CHARACTER_LENGTH() , che è sinonimo di CHAR_LENGTH() .
Ecco un esempio:
SELECT CHAR_LENGTH('Lit');
Ed ecco il risultato:
+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
| 3 |
+--------------------+
Spazi vuoti finali
Nota che CHAR_LENGTH() include spazi finali (ad es. spazi alla fine della stringa) nei suoi calcoli.
Quindi se aggiungiamo uno spazio alla fine dell'esempio precedente:
SELECT CHAR_LENGTH('Lit');
Ecco il risultato:
+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
| 4 |
+---------------------+
Ma possiamo sempre rimuovere quello spazio finale aggiungendo il TRIM() funzione nel mix:
SELECT CHAR_LENGTH(TRIM('Lit '));
Ecco il risultato:
+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
| 3 |
+---------------------------+
Principali spazi vuoti
È la stessa cosa con gli spazi vuoti principali. Quindi, se aggiungiamo uno spazio all'inizio della stringa invece:
SELECT CHAR_LENGTH(' Lit');
Otteniamo lo stesso risultato:
+---------------------+
| CHAR_LENGTH(' Lit') |
+---------------------+
| 4 |
+---------------------+
Tipi di dati
Non importa in quale tipo di dati è archiviata la stringa, restituirà comunque gli stessi risultati. Questo è in contrasto con LENGTH() funzione, che restituirà il doppio del numero di caratteri nei casi in cui i dati vengono archiviati come stringa Unicode.
Nell'esempio seguente, la colonna ArtistName utilizza varchar(255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Ecco il risultato:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
E se modifichiamo il ArtistName colonna per utilizzare Unicode:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
Ed esegui di nuovo la stessa query:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Otteniamo sempre lo stesso risultato:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Tuttavia, se avessimo usato LENGTH() funzione, il risultato sarebbe 6. Questo perché le stringhe Unicode memorizzano 2 byte per carattere e LENGTH() la funzione restituisce la lunghezza misurata in byte.