En Oracle Database, COLLATION()
La función devuelve el nombre de la intercalación derivada para su argumento.
Sintaxis
La sintaxis es así:
COLLATION(expr)
Donde expr
debe evaluarse como una cadena de caracteres de tipo CHAR
, VARCHAR2
, LONG
, NCHAR
o NVARCHAR2
.
Ejemplo
He aquí un ejemplo básico:
SELECT COLLATION('Boat')
FROM DUAL;
Resultado:
USING_NLS_COMP
Ejemplo con COLLATE
Cláusula
Esto es lo que sucede cuando usamos COLLATE
cláusula para especificar explícitamente la intercalación:
SELECT COLLATION('Boat' COLLATE LATIN_AI)
FROM DUAL;
Resultado:
LATIN_AI
Consideraciones al usar NLS_SORT
La COLLATION()
La función devuelve solo la intercalación enlazada a datos, y no la intercalación dinámica establecida por NLS_SORT
parámetro.
Ejemplo:
SELECT COLLATION('Boat' COLLATE USING_NLS_SORT)
FROM DUAL;
Resultado:
USING_NLS_SORT
Puede usar SYS_CONTEXT()
función para devolver el valor de NLS_SORT
parámetro:
SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;
Resultado:
BINARY
Sin embargo, cualquier sufijo como _CI
, _AI
y _CS
se devuelve:
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;
Resultado:
_CI _CS _AI ____________________ ____________________ ____________________ USING_NLS_SORT_CI USING_NLS_SORT_CS USING_NLS_SORT_AI
Argumento nulo
Se devuelve la intercalación, incluso cuando se pasa null
:
SELECT COLLATION(null)
FROM DUAL;
Resultado:
USING_NLS_COMP
Recuento de argumentos incorrecto
Llamar a la función sin pasar ningún argumento da como resultado un error:
SELECT COLLATION()
FROM DUAL;
Resultado:
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:
Y pasar demasiados argumentos también da como resultado un error:
SELECT COLLATION('Boat', 'Dang')
FROM DUAL;
Resultado:
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: