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

Fonction NLS_CHARSET_NAME() dans Oracle

Dans Oracle Database, le NLS_CHARSET_NAME() La fonction renvoie le nom du jeu de caractères d'un jeu de caractères donné, en fonction de son ID. Vous passez l'ID du jeu de caractères en argument et la fonction renvoie son nom.

Syntaxe

La syntaxe ressemble à ceci :

NLS_CHARSET_NAME(number)

number est l'ID du jeu de caractères dont vous souhaitez renvoyer le nom.

Exemple

Voici un exemple de base :

SELECT NLS_CHARSET_NAME(1)
FROM DUAL;

Résultat :

US7ASCII

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

SELECT NLS_CHARSET_NAME(871)
FROM DUAL;

Résultat :

UTF8

Argument nul

Si l'argument est null , le résultat est null :

SET NULL 'null';
SELECT NLS_CHARSET_NAME(null)
FROM DUAL;

Résultat :

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é.

ID de jeu de caractères non valide

La transmission d'un ID de jeu de caractères non valide entraîne null :

SET NULL 'null';
SELECT NLS_CHARSET_NAME(19999)
FROM DUAL;

Résultat :

null

Cependant, passer le mauvais type de données renvoie une erreur :

SELECT NLS_CHARSET_NAME('oops')
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT NLS_CHARSET_NAME('oops')
FROM DUAL
Error report -
ORA-01722: invalid number

Nombre d'arguments incorrects

L'appel de la fonction sans passer d'arguments entraîne une erreur :

SELECT NLS_CHARSET_NAME()
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT NLS_CHARSET_NAME()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Mais en passant plusieurs ID de jeu de caractères, le nom du premier est renvoyé :

SELECT NLS_CHARSET_NAME(871, 1)
FROM DUAL;

Résultat :

UTF8