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

Fonction COLLATION() dans Oracle

Dans Oracle Database, le COLLATION() renvoie le nom de la collation dérivée pour son argument.

Syntaxe

La syntaxe ressemble à ceci :

COLLATION(expr)

expr doit correspondre à une chaîne de caractères de type CHAR , VARCHAR2 , LONG , NCHAR , ou NVARCHAR2 .

Exemple

Voici un exemple de base :

SELECT COLLATION('Boat')
FROM DUAL;

Résultat :

USING_NLS_COMP

Exemple avec le COLLATE Article

Voici ce qui se passe lorsque nous utilisons le COLLATE clause pour spécifier explicitement le classement :

SELECT COLLATION('Boat' COLLATE LATIN_AI) 
FROM DUAL;

Résultat :

LATIN_AI

Considération lors de l'utilisation de NLS_SORT

Le COLLATION() renvoie uniquement le classement lié aux données, et non le classement dynamique défini par NLS_SORT paramètre.

Exemple :

SELECT COLLATION('Boat' COLLATE USING_NLS_SORT) 
FROM DUAL;

Résultat :

USING_NLS_SORT

Vous pouvez utiliser le SYS_CONTEXT() fonction pour retourner la valeur du NLS_SORT paramètre :

SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;

Résultat :

BINARY

Cependant, tout suffixe tel que _CI , _AI , et _CS est renvoyé :

SELECT 
    COLLATION('Boat' COLLATE USING_NLS_SORT_CI) AS "_CI",
    COLLATION('Boat' COLLATE USING_NLS_SORT_CS) AS "_CS",
    COLLATION('Boat' COLLATE USING_NLS_SORT_AI) AS "_AI"
FROM DUAL;

Résultat :

                 _CI                  _CS                  _AI 
____________________ ____________________ ____________________ 
USING_NLS_SORT_CI    USING_NLS_SORT_CS    USING_NLS_SORT_AI    

Argument nul

La collation est retournée, même en passant null :

SELECT COLLATION(null)
FROM DUAL;

Résultat :

USING_NLS_COMP

Nombre d'arguments incorrects

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

SELECT COLLATION()
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT COLLATION()
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 COLLATION('Boat', 'Dang')
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT COLLATION('Boat', 'Dang')
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: