L'une des nombreuses fonctions de MySQL est le LENGTH()
fonction, qui renvoie la longueur d'une chaîne, mesurée en octets.
Exemple :
SELECT LENGTH('Lit');
Résultat :
+---------------+ | LENGTH('Lit') | +---------------+ | 3 | +---------------+
Ceci est un exemple simple et le résultat est le même que si nous avions utilisé le CHAR_LENGTH()
une fonction. Cependant, la LENGTH()
fonction peut renvoyer des résultats différents, selon le type de données.
Types de données
Lorsque vous interrogez une base de données, la LENGTH()
La fonction peut renvoyer un résultat différent, selon le type de données. Les chaînes Unicode renvoient le double du nombre d'octets. Les chaînes UTF-8 peuvent varier.
Voici un exemple d'utilisation d'UTF-8 :
SELECT LENGTH(_utf8 '€');
Résultats :
+---------------------+ | LENGTH(_utf8 '€') | +---------------------+ | 3 | +---------------------+
Dans ce cas, le signe Euro utilise 3 octets.
Dans l'exemple suivant, nous interrogeons une base de données. Dans ce cas, le ArtistName
la colonne utilise varchar(255) type de données :
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Le résultat ressemble donc à ceci :
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 3 | +--------------------+
Cependant, si nous changeons la colonne en ucs2
, chaque caractère sera représenté par un code Unicode de 2 octets, et donc le résultat sera différent.
Pour illustrer, nous pouvons modifier le tableau comme ceci :
SELECT LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Maintenant, si nous l'interrogeons à nouveau :
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Résultat :
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 6 | +--------------------+
Espaces de fin
La LENGTH()
fonction compte les blancs de fin (tels que les espaces à la fin de la chaîne). Ainsi, si nous ajoutons un espace à la fin du premier exemple, nous obtenons le résultat suivant :
SELECT LENGTH('Lit ');
Résultat :
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
Espaces vides
Nous obtenons le même résultat avec des espaces en début de chaîne (par exemple, des espaces en début de chaîne) :
SELECT LENGTH(' Lit');
Résultat :
+----------------+ | LENGTH(' Lit') | +----------------+ | 4 | +----------------+
Transact-SQL (pour SQL Server, Azure) a une fonction similaire, mais dans T-SQL, elle s'appelle DATALENGTH()
.