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

Che cos'è LENGTH() in MySQL?

Una delle tante funzioni in MySQL è LENGTH() funzione, che restituisce la lunghezza di una stringa, misurata in byte.

Esempio:

SELECT LENGTH('Lit');

Risultato:

+---------------+
| LENGTH('Lit') |
+---------------+
|             3 |
+---------------+

Questo è un semplice esempio e il risultato è lo stesso come se avessimo usato CHAR_LENGTH() funzione. Tuttavia, il LENGTH() la funzione può restituire risultati diversi, a seconda del tipo di dati.

Tipi di dati

Quando esegui una query su un database, LENGTH() La funzione può restituire un risultato diverso, a seconda del tipo di dati. Le stringhe Unicode restituiscono il doppio del numero di byte. Le stringhe UTF-8 possono variare.

Ecco un esempio di utilizzo di UTF-8:

SELECT LENGTH(_utf8 '€');

Risultati:

+---------------------+
| LENGTH(_utf8 '€')   |
+---------------------+
|                   3 |
+---------------------+

In questo caso, il segno dell'euro utilizza 3 byte.

Nell'esempio seguente, interroghiamo un database. In questo caso, il ArtistName la colonna utilizza varchar(255) tipo di dati:

SELECT LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Quindi il risultato è simile a questo:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  3 |
+--------------------+

Tuttavia, se cambiamo la colonna in ucs2 , ogni carattere sarà rappresentato da un codice Unicode a 2 byte, quindi il risultato sarà diverso.

Per dimostrare, possiamo modificare la tabella in questo modo:

SELECT LENGTH(ArtistName) 
ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;

Ora, se lo interroghiamo di nuovo:

SELECT LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Risultato:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  6 |
+--------------------+

Spazi vuoti finali

Il LENGTH() la funzione conta gli spazi finali (come gli spazi alla fine della stringa). Quindi se aggiungiamo uno spazio alla fine del primo esempio, otteniamo il seguente risultato:

SELECT LENGTH('Lit');

Risultato:

+----------------+
| LENGTH('Lit ') |
+----------------+
|              4 |
+----------------+

Principali spazi vuoti

Otteniamo lo stesso risultato con spazi iniziali (es. spazi all'inizio della stringa):

SELECT LENGTH(' Lit');

Risultato:

+----------------+
| LENGTH(' Lit') |
+----------------+
|              4 |
+----------------+

Transact-SQL (per SQL Server, Azure) ha una funzione simile, ma in T-SQL si chiama  DATALENGTH() .