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: