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

Qual è l'equivalente di DATALENGTH() in MySQL?

Se lavori con SQL Server da molto tempo, potresti aver riscontrato il Datalength() funzione. Questa funzione restituisce il numero di byte utilizzati per rappresentare un'espressione.

Ma se sei passato a MySQL, potresti essere alla ricerca di una funzione che faccia la stessa cosa.

In MySQL, il Length() La funzione fa sostanzialmente la stessa cosa di T-SQL Datalength() funzione fa in SQL Server (e Azure). Length() di MySQL la funzione restituisce la lunghezza di una stringa, misurata in byte.

Esempi

Ecco alcuni esempi da dimostrare.

SQL Server

Ecco un esempio di base per SQL Server (usando T-SQL):

SELECT DATALENGTH('Cat') AS Datalength;

Risultato:

Datalength
----------
3         

MySQL

Ecco la query equivalente in MySQL:

SELECT LENGTH('Cat') AS Length;

Risultato:

+--------+
| Length |
+--------+
|      3 |
+--------+

Entrambi misurano i byte

Ma soprattutto, entrambe le funzioni misurano byte , non caratteri . Quindi, se i dati vengono archiviati come stringa Unicode, il numero di byte sarà il doppio del numero di caratteri. Questo perché le stringhe Unicode utilizzano 2 byte per carattere.

Di seguito è riportato un esempio di esecuzione essenzialmente della stessa query su una colonna Unicode in SQL Server, quindi in MySQL.

SQL Server

SELECT DATALENGTH(ArtistName) AS DataLength
FROM Artists 
WHERE ArtistName = 'Lit';

Risultato:

DataLength
----------
6         

MySQL

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

Risultato:

+--------+
| Length |
+--------+
|      6 |
+--------+

È importante notare che il motivo per cui questi esempi restituiscono 6 è dovuto al tipo di dati utilizzato nel database. Entrambi gli esempi potrebbero anche restituire 3 se i dati non sono stati archiviati come Unicode.

Caratteri vs Byte

Nell'esempio di SQL Server, se avessimo usato Len() funzione invece, avrebbe restituito 3. Questo perché Len() restituisce il numero di caratteri, non i byte.

Allo stesso modo per MySQL, se avessimo usato Char_Length() funzione, avrebbe anche restituito 3, perché Char_Length() restituisce il numero di caratteri invece di byte.