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

Fonction NLS_CHARSET_ID() dans Oracle

Dans Oracle, le NLS_CHARSET_ID() renvoie le numéro d'identification du jeu de caractères d'un jeu de caractères donné. Vous passez le nom du jeu de caractères en argument et il renvoie son ID.

Syntaxe

La syntaxe ressemble à ceci :

NLS_CHARSET_ID(string)

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

Exemple

Voici un exemple de base :

SELECT NLS_CHARSET_ID('AL16UTF16')
FROM DUAL;

Résultat :

2000

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

SELECT NLS_CHARSET_ID('UTF8')
FROM DUAL;

Résultat :

871

Argument nul

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

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

Résultat :

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

Noms de jeux de caractères non valides

Passer un nom de jeu de caractères non valide entraîne null :

SET NULL 'null';
SELECT NLS_CHARSET_ID('oops')
FROM DUAL;

Résultat :

   NLS_CHARSET_ID('OOPS') 
_________________________ 
                     null 

Nombre d'arguments incorrects

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

SELECT NLS_CHARSET_ID()
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT NLS_CHARSET_ID()
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:

Cependant, la transmission de plusieurs noms de jeux de caractères entraîne le retour de l'ID du premier :

SELECT NLS_CHARSET_ID('UTF8', 'AL16UTF16')
FROM DUAL;

Résultat :

871