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)
Où 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: