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

Fonctionnement de LENGTH() dans MariaDB

Dans MariaDB, LENGTH() est une fonction de chaîne intégrée qui renvoie la longueur de l'argument de chaîne donné.

En mode par défaut, la longueur de la chaîne est mesurée en octets. Mais en mode Oracle, il est mesuré en caractères.

Syntaxe

La syntaxe ressemble à ceci :

LENGTH(str)

str est la chaîne dont la longueur sera renvoyée.

Exemple

Voici un exemple de base :

SELECT LENGTH('café');

Résultat :

+-----------------+
| LENGTH('café')  |
+-----------------+
|               5 |
+-----------------+

Dans ce cas, la chaîne comportait quatre caractères, mais LENGTH() a renvoyé 5 .

C'est parce que le dernier caractère utilise deux octets, et j'utilise le mode SQL par défaut (mon sql_mode=DEFAULT ). En mode SQL par défaut, LENGTH() renvoie le nombre d'octets.

Mode Oracle

Le passage en mode Oracle entraîne LENGTH() renvoyant uniquement le nombre de caractères dans la chaîne (par opposition au nombre d'octets).

Basculons notre session en mode Oracle :

SET SESSION sql_mode='ORACLE';

Et maintenant, lançons le précédent LENGTH() encore un exemple :

SELECT LENGTH('café');

Résultat :

+-----------------+
| LENGTH('café')  |
+-----------------+
|               4 |
+-----------------+

Cette fois, il renvoie le nombre de caractères (4) au lieu du nombre d'octets (5).

En mode Oracle, LENGTH() renvoie le même résultat que CHAR_LENGTH() et son synonyme, CHARACTER_LENGTH() .

Comparaison avec CHAR_LENGTH() et BIT_LENGTH()

Revenons au mode par défaut :

SET SESSION sql_mode=DEFAULT;

Voici une comparaison rapide entre LENGTH() en mode par défaut, CHAR_LENGTH() et BIT_LENGTH() qui renvoie le nombre de bits dans une chaîne :

SELECT 
    LENGTH('อ'),
    CHAR_LENGTH('อ'),
    BIT_LENGTH('อ');

Résultat :

+---------------+--------------------+-------------------+
| LENGTH('อ')   | CHAR_LENGTH('อ')   | BIT_LENGTH('อ')   |
+---------------+--------------------+-------------------+
|             3 |                  1 |                24 |
+---------------+--------------------+-------------------+

Ce caractère thaï ( ) utilise 3 octets, et donc LENGTH() renvoie 3 .

CHAR_LENGTH() renvoie 1 , car il ne s'agit toujours que d'un seul caractère, et BIT_LENGTH() renvoie le nombre de bits (24 ).

Encore une fois, si nous avions été en mode Oracle, LENGTH() aurait renvoyé la même chose que CHAR_LENGTH() .

Non-chaînes

Si l'argument n'est pas une chaîne, il est converti en chaîne.

Voici un autre exemple qui utilise un nombre :

SELECT LENGTH(1234);

Résultat :

+--------------+
| LENGTH(1234) |
+--------------+
|            4 |
+--------------+

Arguments nuls

Passer null renvoie null :

SELECT LENGTH(null);

Résultat :

+--------------+
| LENGTH(null) |
+--------------+
|         NULL |
+--------------+

Argument manquant

Appel de LENGTH() sans passer d'argument génère une erreur :

SELECT LENGTH();

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'