Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est l'équivalent DATALENGTH() dans MySQL ?

Si vous travaillez avec SQL Server depuis un certain temps, vous avez peut-être rencontré le Datalength() une fonction. Cette fonction renvoie le nombre d'octets utilisés pour représenter une expression.

Mais si vous êtes passé à MySQL, vous recherchez peut-être une fonction qui fait la même chose.

Dans MySQL, le Length() La fonction fait fondamentalement la même chose que le T-SQL Datalength() fonctionne dans SQL Server (et Azure). Length() de MySQL renvoie la longueur d'une chaîne, mesurée en octets.

Exemples

Voici quelques exemples à démontrer.

SQL Server

Voici un exemple de base pour SQL Server (utilisant T-SQL) :

SELECT DATALENGTH('Cat') AS Datalength;

Résultat :

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

MySQL

Voici la requête équivalente dans MySQL :

SELECT LENGTH('Cat') AS Length;

Résultat :

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

Les deux mesurent les octets

Mais le plus important, les deux fonctions mesurent octets , pas des caractères . Ainsi, si les données sont stockées sous forme de chaîne Unicode, le nombre d'octets sera le double du nombre de caractères. En effet, les chaînes Unicode utilisent 2 octets par caractère.

Vous trouverez ci-dessous un exemple d'exécution essentiellement de la même requête sur une colonne Unicode dans SQL Server, puis dans MySQL.

SQL Server

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

Résultat :

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

MySQL

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

Résultat :

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

Il est important de noter que la raison pour laquelle ces exemples renvoient 6 est due au type de données utilisé dans la base de données. Les deux exemples pourraient également renvoyer 3 si les données n'étaient pas stockées au format Unicode.

Caractères vs Octets

Dans l'exemple SQL Server, si nous avions utilisé le Len() fonction à la place, il aurait renvoyé 3. C'est parce que Len() renvoie le nombre de caractères - pas les octets.

De même pour MySQL, si nous avions utilisé le Char_Length() fonction, elle aurait également renvoyé 3, car Char_Length() renvoie le nombre de caractères au lieu d'octets.