
La fonction SQL ORACLE LENGHT retourne le nombre de caractère d’un champ ou d’une variable :
SELECT LENGTH('BONJOUR') FROM DUAL ;
LENGTH('BONJOUR')
----------------------
7
Aussi nous pouvons exécuter cette commande sur un nombre, le résultat est le nombre des digits entiers plus les digits décimaux plus la vergue dans le cas ou les digits décimaux sont non nuls :
SELECT LENGTH(10), LENGTH(01), LENGTH(10.00), LENGTH(10.001) FROM DUAL ; LENGTH(10) LENGTH(01) LENGTH(10.00) LENGTH(10.001) ---------------- ---------------- ---------------- ---------------- 2 1 2 6
Syntaxe de LENGTH en SQL Oracle
LENGTH(chaine)LENGTH retourne le nombre de caractères d'une chaîne, espaces compris. C'est l'équivalent Oracle de LEN (SQL Server) et de CHAR_LENGTH (MySQL).
🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.
Exemples pratiques
SELECT LENGTH('COURSSQL') FROM DUAL; -- 8
SELECT LENGTH(' espace ') FROM DUAL; -- 10 (les espaces comptent)
SELECT LENGTH('') FROM DUAL; -- NULL (chaîne vide = NULL en Oracle)Contrôler la qualité des données :
-- codes postaux mal saisis
SELECT * FROM clients WHERE LENGTH(code_postal) != 5;
-- numéros de téléphone trop courts
SELECT nom, telephone FROM clients WHERE LENGTH(TRIM(telephone)) < 10;Trier par longueur :
SELECT nom FROM produits ORDER BY LENGTH(nom) DESC;Le piège des colonnes CHAR
Sur une colonne CHAR(10), Oracle complète avec des espaces : LENGTH renvoie donc toujours 10. Utilisez TRIM pour obtenir la longueur réelle :
SELECT LENGTH(nom), LENGTH(TRIM(nom)) FROM table_char; -- 10, 3LENGTH, LENGTHB et LENGTHC : Unicode et octets
| Fonction | Compte | Sur 'école' (UTF-8) |
|---|---|---|
| LENGTH | caractères | 5 |
| LENGTHB | octets | 6 (é = 2 octets) |
| LENGTHC | caractères Unicode normalisés | 5 |
LENGTHB est indispensable quand on dimensionne des colonnes VARCHAR2(n BYTE) : une chaîne de 100 caractères accentués peut dépasser 100 octets et déclencher l'erreur ORA-12899.
LENGTH et les valeurs NULL
En Oracle, la chaîne vide '' est NULL, donc LENGTH('') renvoie NULL et non 0. Pour obtenir 0, utilisez NVL :
SELECT NVL(LENGTH(commentaire), 0) FROM avis;