I Oracle Database, COLLATION()
funktion returnerar namnet på den härledda sorteringen för dess argument.
Syntax
Syntaxen ser ut så här:
COLLATION(expr)
Där expr
måste utvärderas till en teckensträng av typen CHAR
, VARCHAR2
, LONG
, NCHAR
, eller NVARCHAR2
.
Exempel
Här är ett grundläggande exempel:
SELECT COLLATION('Boat')
FROM DUAL;
Resultat:
USING_NLS_COMP
Exempel med COLLATE
Klausul
Här är vad som händer när vi använder COLLATE
sats för att explicit specificera sorteringen:
SELECT COLLATION('Boat' COLLATE LATIN_AI)
FROM DUAL;
Resultat:
LATIN_AI
Övervägande när du använder NLS_SORT
COLLATION()
funktionen returnerar endast den databundna sorteringen och inte den dynamiska sorteringen som anges av NLS_SORT
parameter.
Exempel:
SELECT COLLATION('Boat' COLLATE USING_NLS_SORT)
FROM DUAL;
Resultat:
USING_NLS_SORT
Du kan använda SYS_CONTEXT()
funktion för att returnera värdet för NLS_SORT
parameter:
SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;
Resultat:
BINARY
Men alla suffix som _CI
, _AI
och _CS
returneras:
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
Nollargument
Sorteringen returneras, även när null
skickas :
SELECT COLLATION(null)
FROM DUAL;
Resultat:
USING_NLS_COMP
Inkorrekt antal argument
Att anropa funktionen utan att skicka några argument resulterar i ett fel:
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:
Och att skicka för många argument resulterar också i ett fel:
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: