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

Fonction LENGTH() dans Oracle

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() et LENGTH() syntaxe, l'argument peut être n'importe lequel des types de données CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , ou NCLOB .
  • Lors de l'utilisation de LENGTHC() , LENGTH2() et LENGTH4() syntaxe, l'argument peut être n'importe lequel des types de données CHAR , VARCHAR2 , NCHAR , NVARCHAR2 (mais pas CLOB ou NCLOB ).

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: