Mysql
 sql >> Database >  >> RDS >> Mysql

Che cos'è CHAR_LENGTH() in MySQL?

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.