In der Oracle-Datenbank die COLLATION()
Die Funktion gibt den Namen der abgeleiteten Sortierung für ihr Argument zurück.
Syntax
Die Syntax sieht so aus:
COLLATION(expr)
Wobei expr
muss zu einer Zeichenfolge vom Typ CHAR
ausgewertet werden , VARCHAR2
, LONG
, NCHAR
, oder NVARCHAR2
.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT COLLATION('Boat')
FROM DUAL;
Ergebnis:
USING_NLS_COMP
Beispiel mit dem COLLATE
Klausel
Folgendes passiert, wenn wir COLLATE
verwenden -Klausel, um die Sortierung explizit anzugeben:
SELECT COLLATION('Boat' COLLATE LATIN_AI)
FROM DUAL;
Ergebnis:
LATIN_AI
Überlegung bei Verwendung von NLS_SORT
Die COLLATION()
Die Funktion gibt nur die datengebundene Sortierung zurück und nicht die dynamische Sortierung, die durch NLS_SORT
festgelegt wurde Parameter.
Beispiel:
SELECT COLLATION('Boat' COLLATE USING_NLS_SORT)
FROM DUAL;
Ergebnis:
USING_NLS_SORT
Sie können den SYS_CONTEXT()
verwenden Funktion, um den Wert von NLS_SORT
zurückzugeben Parameter:
SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;
Ergebnis:
BINARY
Jedoch jedes Suffix wie _CI
, _AI
, und _CS
wird zurückgegeben:
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;
Ergebnis:
_CI _CS _AI ____________________ ____________________ ____________________ USING_NLS_SORT_CI USING_NLS_SORT_CS USING_NLS_SORT_AI
Null-Argument
Die Sortierung wird zurückgegeben, auch wenn null
übergeben wird :
SELECT COLLATION(null)
FROM DUAL;
Ergebnis:
USING_NLS_COMP
Falsche Argumentanzahl
Der Aufruf der Funktion ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT COLLATION()
FROM DUAL;
Ergebnis:
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:
Und die Übergabe zu vieler Argumente führt ebenfalls zu einem Fehler:
SELECT COLLATION('Boat', 'Dang')
FROM DUAL;
Ergebnis:
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: