En Oracle, el NLS_CHARSET_DECL_LEN()
La función devuelve la longitud de la declaración (en número de caracteres) de un NCHAR
columna.
Sintaxis
La sintaxis es así:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Donde byte_count
es el ancho de la columna y char_set_id
es el ID del conjunto de caracteres de la columna.
Ejemplo
He aquí un ejemplo básico:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;
Resultado:
100
Aquí está con un ID de juego de caracteres diferente:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;
Resultado:
50
Obtener el ID del juego de caracteres
Podemos usar el NLS_CHARSET_ID()
función para devolver el ID del juego de caracteres para un juego de caracteres dado:
Ejemplo:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL;
Resultado:
50
Argumento nulo
Si algún argumento es null
, el resultado es null
:
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;
Resultado:
R1 R2 _______ _______ null 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.
Recuento de argumentos incorrecto
Llamar a la función sin pasar ningún argumento da como resultado un error:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN() 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 NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN(100, 1, 2) 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: