Dans Oracle, le LENGTH()
fonction renvoie la longueur de son argument.
LENGTH()
peut également être considéré comme un ensemble de fonctions. Il y a cinq fonctions distinctes ; LENGTH()
, LENGTH()
, LENGTH()
, LENGTH2()
, et LENGTH4()
. Chaque fonction calcule la longueur d'une manière différente.
Syntaxe
La syntaxe ressemble à ceci :
{ LENGTH
| LENGTHB
| LENGTHC
| LENGTH2
| LENGTH4
}
(char)
Les fonctions calculent les longueurs comme suit :
Fonction | Calcule la longueur en utilisant… |
---|---|
LENGTH() | Caractères tels que définis par le jeu de caractères d'entrée, le premier caractère de la chaîne ayant la position 1. |
LENGTH() | Octets |
LENGTHC() | Caractères complets Unicode |
LENGTH2() | Points de code UCS2 |
LENGTH4() | Points de code UCS4 |
Le type d'argument peut être le suivant :
- Lors de l'utilisation de
LENGTH()
etLENGTH()
syntaxe, l'argument peut être n'importe lequel des types de donnéesCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, ouNCLOB
. - Lors de l'utilisation de
LENGTHC()
,LENGTH2()
etLENGTH4()
syntaxe, l'argument peut être n'importe lequel des types de donnéesCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
(mais pasCLOB
ouNCLOB
).
Exemple
Voici un exemple de base :
SELECT LENGTH('Big fat cat')
FROM DUAL;
Résultat :
11
Par rapport à LENGTHB()
Cet exemple montre comment les résultats peuvent différer, selon la fonction spécifique que vous utilisez et le jeu de caractères impliqué.
Dans ce cas, nous comparons LENGTH()
avec LENGTH()
:
SELECT
LENGTH('Böyük yağlı pişik') AS LENGTH,
LENGTHB('Böyük yağlı pişik') AS LENGTHB
FROM DUAL;
Résultat :
LENGTH LENGTHB _________ __________ 17 22
Nous pouvons voir que les deux fonctions ont renvoyé deux résultats différents. Cela est dû au fait que certains caractères de cette chaîne utilisent deux octets.
La LENGTH()
La fonction renvoie la longueur en caractères telle que définie par le jeu de caractères d'entrée, tandis que la fonction LENGTHB()
la fonction renvoie la longueur en octets .
Si nous revenons à la chaîne d'origine, les résultats sont les mêmes entre les deux fonctions :
SELECT
LENGTH('Big fat cat') AS LENGTH,
LENGTHB('Big fat cat') AS LENGTHB
FROM DUAL;
Résultat :
LENGTH LENGTHB _________ __________ 11 11
Cette chaîne utilise un seul octet par caractère, et donc la longueur en octets est la même que le nombre de caractères.
Argument nul
Si l'argument est null
, le résultat est null
:
SET NULL 'null';
SELECT
LENGTH(null) AS LENGTH,
LENGTHB(null) AS LENGTHB,
LENGTHC(null) AS LENGTHC,
LENGTH2(null) AS LENGTH2,
LENGTH4(null) AS LENGTH4
FROM DUAL;
Résultat :
LENGTH LENGTHB LENGTHC LENGTH2 LENGTH4 _________ __________ __________ __________ __________ null null null null null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null
se produit à la suite d'un SQL SELECT
déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Nombre d'arguments incorrects
L'appel de la fonction sans passer d'arguments entraîne une erreur :
SELECT LENGTH()
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT LENGTH() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Et passer trop d'arguments entraîne également une erreur :
SELECT LENGTH('Big fat cat', 'oops')
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT LENGTH('Big fat cat', 'oops') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: