sql >> Base de Datos >  >> RDS >> Oracle

Función NLS_COLLATION_NAME() en Oracle

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: