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

Función NLS_CHARSET_NAME() en Oracle

En Oracle Database, el NLS_CHARSET_NAME() La función devuelve el nombre del juego de caracteres de un juego de caracteres determinado, en función de su ID. Pasa el ID del conjunto de caracteres como argumento y la función devuelve su nombre.

Sintaxis

La sintaxis es así:

NLS_CHARSET_NAME(number)

Donde number es el ID del conjunto de caracteres para el que desea devolver el nombre.

Ejemplo

He aquí un ejemplo básico:

SELECT NLS_CHARSET_NAME(1)
FROM DUAL;

Resultado:

US7ASCII

Aquí está con un ID de juego de caracteres diferente:

SELECT NLS_CHARSET_NAME(871)
FROM DUAL;

Resultado:

UTF8

Argumento nulo

Si el argumento es null , el resultado es null :

SET NULL 'null';
SELECT NLS_CHARSET_NAME(null)
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.

ID de conjunto de caracteres no válido

Pasar un ID de conjunto de caracteres no válido da como resultado null :

SET NULL 'null';
SELECT NLS_CHARSET_NAME(19999)
FROM DUAL;

Resultado:

null

Sin embargo, pasar el tipo de datos incorrecto devuelve un error:

SELECT NLS_CHARSET_NAME('oops')
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NLS_CHARSET_NAME('oops')
FROM DUAL
Error report -
ORA-01722: invalid number

Recuento de argumentos incorrecto

Llamar a la función sin pasar ningún argumento da como resultado un error:

SELECT NLS_CHARSET_NAME()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NLS_CHARSET_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:

Pero al pasar varios ID de conjuntos de caracteres, se devuelve el nombre del primero:

SELECT NLS_CHARSET_NAME(871, 1)
FROM DUAL;

Resultado:

UTF8