En Oracle Database, el NLS_COLLATION_NAME()
La función devuelve el nombre de una colación dada, según su ID. Pasa el ID de intercalación al llamar a la función y devuelve el nombre de intercalación.
Sintaxis
La sintaxis es así:
NLS_COLLATION_NAME(expr [, flag ])
Donde expr
es el ID de intercalación de tipo NUMBER
.
La flag
argument es un argumento opcional que solo se aplica a las intercalaciones Algoritmo de intercalación Unicode (UCA). Determina si la función debe devolver la forma abreviada o la forma larga del nombre de colación.
La flag
argumento puede ser uno de los siguientes:
Bandera | Descripción |
---|---|
'S' o de 's' | Devuelve la forma abreviada del nombre de colación. |
'L' o 'l' | Devuelve la forma larga del nombre de colación. |
El valor predeterminado para esta bandera es 'L'
.
Ejemplo
He aquí un ejemplo básico:
SELECT NLS_COLLATION_NAME(70)
FROM DUAL;
Resultado:
XAZERBAIJANI
Aquí hay algunos ejemplos más:
SELECT
NLS_COLLATION_NAME(4112) AS "1",
NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;
Resultado:
1 2 ___________ _____________ FRENCH_M CANADIAN_M
Bandera de formato largo/breve
Como se mencionó, podemos pasar un indicador opcional para determinar si devuelve la forma abreviada o la forma larga del nombre de colación.
SELECT
NLS_COLLATION_NAME(208920, 'L') AS "Long",
NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;
Resultado:
Long Short __________________________________________ _______________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN UCA0620_THAI
El valor predeterminado para esta bandera es 'L'
. Entonces, si omitimos la bandera, se devuelve la forma larga:
SELECT
NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;
Resultado:
Default __________________________________________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN
Sin embargo, esta marca solo se aplica a las intercalaciones del Algoritmo de intercalación Unicode (UCA).
Si aplicamos la bandera a una colación que no es UCA, no vemos ninguna diferencia:
SELECT
NLS_COLLATION_NAME(4112, 'L') AS "1",
NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;
Resultado:
1 2 ___________ ___________ FRENCH_M FRENCH_M
Colección no válida
Pasar un nombre de colación no válido da como resultado null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;
Resultado:
null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null
ocurre como resultado de un SQL SELECT
declaración.
Sin embargo, puede usar SET NULL
para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null
debe ser devuelto.
Argumento nulo
Pasando null
devuelve null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;
Resultado:
null
Recuento de argumentos incorrecto
Llamar a la función sin pasar ningún argumento da como resultado un error:
SELECT NLS_COLLATION_NAME()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_COLLATION_NAME() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Y pasar demasiados argumentos también da como resultado un error:
SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_COLLATION_NAME(4112, 'S', 'L') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: