Oracle
 sql >> Database >  >> RDS >> Oracle

COLLATION() Funzione in Oracle

In Oracle Database, il COLLATION() La funzione restituisce il nome delle regole di confronto derivate per il suo argomento.

Sintassi

La sintassi è questa:

COLLATION(expr)

Dove expr deve restituire una stringa di caratteri di tipo CHAR , VARCHAR2 , LONG , NCHAR o NVARCHAR2 .

Esempio

Ecco un esempio di base:

SELECT COLLATION('Boat')
FROM DUAL;

Risultato:

USING_NLS_COMP

Esempio con COLLATE Clausola

Ecco cosa succede quando utilizziamo COLLATE clausola per specificare esplicitamente le regole di confronto:

SELECT COLLATION('Boat' COLLATE LATIN_AI) 
FROM DUAL;

Risultato:

LATIN_AI

Considerazione quando si utilizza NLS_SORT

Il COLLATION() La funzione restituisce solo le regole di confronto legate ai dati e non le regole di confronto dinamiche impostate da NLS_SORT parametro.

Esempio:

SELECT COLLATION('Boat' COLLATE USING_NLS_SORT) 
FROM DUAL;

Risultato:

USING_NLS_SORT

Puoi usare il SYS_CONTEXT() funzione per restituire il valore di NLS_SORT parametro:

SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;

Risultato:

BINARY

Tuttavia, qualsiasi suffisso come _CI , _AI e _CS viene restituito:

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;

Risultato:

                 _CI                  _CS                  _AI 
____________________ ____________________ ____________________ 
USING_NLS_SORT_CI    USING_NLS_SORT_CS    USING_NLS_SORT_AI    

Argomento nullo

Le regole di confronto vengono restituite, anche quando si passa null :

SELECT COLLATION(null)
FROM DUAL;

Risultato:

USING_NLS_COMP

Conteggio argomenti errato

La chiamata della funzione senza passare alcun argomento genera un errore:

SELECT COLLATION()
FROM DUAL;

Risultato:

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:

E anche passare troppi argomenti provoca un errore:

SELECT COLLATION('Boat', 'Dang')
FROM DUAL;

Risultato:

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: