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: