En Oracle, el NLS_INITCAP()
La función devuelve su argumento con la primera letra de cada palabra en mayúsculas y todas las demás letras en minúsculas.
Sin embargo, la capitalización real dependerá de la intercalación que se utilice. Por ejemplo, podría resultar en que más de la primera letra esté en mayúscula.
Es similar al INITCAP()
función, excepto que acepta un segundo argumento que le permite especificar la intercalación. La intercalación maneja requisitos lingüísticos especiales para conversiones de casos.
Sintaxis
La sintaxis es así:
NLS_INITCAP(char [, 'nlsparam' ])
Donde ambos char
y 'nlsparam'
puede ser cualquiera de los tipos de datos CHAR
, VARCHAR2
, NCHAR
o NVARCHAR2
.
El 'nlsparam'
argumento puede tener la siguiente forma:
'NLS_SORT = sort'
Donde sort
es una colación con nombre.
Si omite este argumento, se utiliza la colación determinada de la función.
Ejemplo
Aquí hay un ejemplo simple para demostrarlo:
SELECT NLS_INITCAP('the lake')
FROM DUAL;
Resultado:
NLS_INITCAP('THELAKE') _________________________ The Lake
Especifique una colación
Aquí hay un ejemplo que demuestra cómo especificar una intercalación puede alterar los resultados:
SELECT
NLS_INITCAP('het ijsselmeer') AS c1,
NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;
Resultado:
C1 C2 _________________ _________________ Het Ijsselmeer Het IJsselmeer
Observe que en la segunda columna, las dos primeras letras de IJsselmeer están en mayúscula, mientras que la primera columna solo escribe en mayúscula la primera letra.
En holandés, ij se considera como una sola letra, por lo que ambos caracteres se escriben en mayúscula cuando aparecen al principio de una oración o de un nombre propio.
Tenga en cuenta que NLS_SORT
anula la intercalación del primer argumento solo en el momento de la ejecución. Por lo tanto, la siguiente instrucción devuelve la colación del primer argumento, no del segundo:
SELECT
COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
FROM DUAL;
Resultado:
COLLATION _________________ USING_NLS_COMP
El tema de las colaciones puede ser bastante complejo. Consulte el Apéndice C en la Guía de compatibilidad con la globalización de la base de datos de Oracle para conocer las reglas de determinación de intercalación y las reglas de derivación de intercalación para esta función.
¿Qué pasa si paso todas las letras MAYÚSCULAS?
Pasar todas las letras mayúsculas no cambia el resultado:
SELECT
NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;
Resultado:
RESULT _________________ Het IJsselmeer
Valores nulos
Si algún argumento es null
, el resultado es null
:
SET NULL 'null';
SELECT
NLS_INITCAP('het IJsselmeer', null) AS r1,
NLS_INITCAP(null, 'NLS_SORT = XDutch') AS r2,
NLS_INITCAP(null, null) AS r3
FROM DUAL;
Resultado:
R1 R2 R3 _______ _______ _______ null 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
Llamando a NLS_INITCAP()
sin pasar ningún argumento devuelve un error:
SELECT NLS_INITCAP()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_INITCAP() 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 el número incorrecto de argumentos da como resultado un error:
SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3) FROM DUAL Error at Command Line : 1 Column : 59 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: