sql >> Databasteknik >  >> RDS >> Oracle

COLLATION() Funktion i Oracle

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:

  1. Oracle-fråga för att hämta kolumnnamn

  2. Hur man delar DATE och TIME från DATETIME i MySQL

  3. Hur tar man bort från select i MySQL?

  4. Returnera en procentandel av en resultatuppsättning i SQL Server