- Catégories :
LENGTH, LEN¶
Renvoie la longueur d’une chaîne ou d’une valeur binaire d’entrée. Pour les chaînes, la longueur correspond au nombre de caractères et les caractères UTF-8 caractères comptés comme un seul caractère. Pour les valeurs binaires, la longueur est le nombre d’octets.
Syntaxe¶
LENGTH( <expression> )
LEN( <expression> )
Arguments¶
expression
L’expression d’entrée doit être une chaîne ou une valeur binaire.
Renvoie¶
Le type de données renvoyé est INTEGER (plus précisément, NUMBER(18, 0)).
Détails du classement¶
No impact. Dans les langues dans lesquelles un caractère est une lettre et inversement, la fonction LENGTH se comporte de la même manière avec et sans classement.
In languages where the alphabet contains digraphs or trigraphs (such as « Dz » and « Dzs » in Hungarian), each character in each digraph and trigraph is treated as an independent character, not as part of a single multi-character letter. Par exemple, bien que le hongrois considère l’entrée « dz » comme une seule lettre, Snowflake renvoie
2
pourLENGTH(COLLATE('dz', 'hu'))
.
Exemples¶
Créez une table et insérez des valeurs VARCHAR :
CREATE OR REPLACE TABLE length_function_demo (s VARCHAR);
INSERT INTO length_function_demo VALUES
(''),
('Joyeux Noël'),
('Merry Christmas'),
('Veselé Vianoce'),
('Wesołych Świąt'),
('圣诞节快乐'),
(NULL);
Effectuez une requête dans la table à l’aide de la fonction LENGTH :
SELECT s, LENGTH(s) FROM length_function_demo;
+-----------------+-----------+
| S | LENGTH(S) |
|-----------------+-----------|
| | 0 |
| Joyeux Noël | 11 |
| Merry Christmas | 15 |
| Veselé Vianoce | 14 |
| Wesołych Świąt | 14 |
| 圣诞节快乐 | 5 |
| NULL | NULL |
+-----------------+-----------+
Pour l’exemple suivant, créez une table et insérez les données BINARY :
CREATE OR REPLACE TABLE binary_demo_table (
v VARCHAR,
b_hex BINARY,
b_base64 BINARY,
b_utf8 BINARY);
INSERT INTO binary_demo_table (v) VALUES ('hello');
UPDATE binary_demo_table SET
b_hex = TO_BINARY(HEX_ENCODE(v), 'HEX'),
b_base64 = TO_BINARY(BASE64_ENCODE(v), 'BASE64'),
b_utf8 = TO_BINARY(v, 'UTF-8');
SELECT * FROM binary_demo_table;
+-------+------------+------------+------------+
| V | B_HEX | B_BASE64 | B_UTF8 |
|-------+------------+------------+------------|
| hello | 68656C6C6F | 68656C6C6F | 68656C6C6F |
+-------+------------+------------+------------+
Effectuez une requête dans la table à l’aide de la fonction LENGTH :
SELECT v, LENGTH(v),
TO_VARCHAR(b_hex, 'HEX') AS b_hex, LENGTH(b_hex),
TO_VARCHAR(b_base64, 'BASE64') AS b_base64, LENGTH(b_base64),
TO_VARCHAR(b_utf8, 'UTF-8') AS b_utf8, LENGTH(b_utf8)
FROM binary_demo_table;
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+
| V | LENGTH(V) | B_HEX | LENGTH(B_HEX) | B_BASE64 | LENGTH(B_BASE64) | B_UTF8 | LENGTH(B_UTF8) |
|-------+-----------+------------+---------------+----------+------------------+--------+----------------|
| hello | 5 | 68656C6C6F | 5 | aGVsbG8= | 5 | hello | 5 |
+-------+-----------+------------+---------------+----------+------------------+--------+----------------+