sql >> Database teknologi >  >> RDS >> Oracle

COLLATION() Funktion i Oracle

I Oracle Database er COLLATION() funktion returnerer navnet på den afledte kollation for dets argument.

Syntaks

Syntaksen ser sådan ud:

COLLATION(expr)

Hvor expr skal evalueres til en tegnstreng af typen CHAR , VARCHAR2 , LONG , NCHAR eller NVARCHAR2 .

Eksempel

Her er et grundlæggende eksempel:

SELECT COLLATION('Boat')
FROM DUAL;

Resultat:

USING_NLS_COMP

Eksempel med COLLATE Klausul

Her er, hvad der sker, når vi bruger COLLATE klausul for eksplicit at specificere sammenstillingen:

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

Resultat:

LATIN_AI

Overvejelse ved brug af NLS_SORT

COLLATION() funktion returnerer kun den databundne sortering og ikke den dynamiske sortering, der er indstillet af NLS_SORT parameter.

Eksempel:

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

Resultat:

USING_NLS_SORT

Du kan bruge SYS_CONTEXT() funktion for at returnere værdien af ​​NLS_SORT parameter:

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

Resultat:

BINARY

Men ethvert suffiks såsom _CI , _AI og _CS returneres:

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;

Resultat:

                 _CI                  _CS                  _AI 
____________________ ____________________ ____________________ 
USING_NLS_SORT_CI    USING_NLS_SORT_CS    USING_NLS_SORT_AI    

Nul-argument

Sorteringen returneres, selv når null sendes :

SELECT COLLATION(null)
FROM DUAL;

Resultat:

USING_NLS_COMP

Forkert antal argumenter

Kaldning af funktionen uden at sende nogen argumenter resulterer i en fejl:

SELECT COLLATION()
FROM DUAL;

Resultat:

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:

Og at sende for mange argumenter resulterer også i en fejl:

SELECT COLLATION('Boat', 'Dang')
FROM DUAL;

Resultat:

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:

  1. Sådan beregnes det gennemsnitlige salg pr. dag i MySQL

  2. Hvordan binder man SQL-variabler i PHP?

  3. Bruger AT TIME ZONE til at rette en gammel rapport

  4. Ret "FEJL 1054 (42S22):Ukendt kolonne 'colname' i 'order clause' i MariaDB