Oracle
 sql >> Datenbank >  >> RDS >> Oracle

COLLATION()-Funktion in Oracle

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: