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

Fonction NLS_CHARSET_DECL_LEN() dans Oracle

Dans Oracle, le NLS_CHARSET_DECL_LEN() La fonction renvoie la longueur de déclaration (en nombre de caractères) d'un NCHAR colonne.

Syntaxe

La syntaxe ressemble à ceci :

NLS_CHARSET_DECL_LEN(byte_count, char_set_id)

byte_count est la largeur de la colonne et char_set_id est l'ID du jeu de caractères de la colonne.

Exemple

Voici un exemple de base :

SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;

Résultat :

100

Le voici avec un ID de jeu de caractères différent :

SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;

Résultat :

50

Obtenir l'ID du jeu de caractères

Nous pouvons utiliser le NLS_CHARSET_ID() fonction pour renvoyer l'ID du jeu de caractères pour un jeu de caractères donné :

Exemple :

SELECT NLS_CHARSET_DECL_LEN(
    100, 
    NLS_CHARSET_ID('AL16UTF16')
    )
FROM DUAL;

Résultat :

50

Argument nul

Si un argument est null , le résultat est null :

SET NULL 'null';
SELECT 
    NLS_CHARSET_DECL_LEN(null, 1) AS r1,
    NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;

Résultat :

     R1      R2 
_______ _______ 
   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 NLS_CHARSET_DECL_LEN()
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT NLS_CHARSET_DECL_LEN()
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 NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
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: