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

Función NLS_UPPER() en Oracle

En Oracle, NLS_UPPER() la función devuelve su argumento con todas las letras en mayúsculas.

Es similar a UPPER() 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_UPPER(char [, 'nlsparam' ])

Donde ambos char y 'nlsparam' puede ser de cualquiera de los tipos de datos CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB o NCLOB .

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_UPPER('coffee time') AS Result
FROM DUAL;

Resultado:

        RESULT 
______________ 
COFFEE TIME   

Lo mismo se aplica cuando el argumento usa mayúsculas y minúsculas:

SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;

Resultado:

        RESULT 
______________ 
COFFEE TIME   

Y si el argumento ya está en mayúsculas, entonces el resultado es el mismo que la entrada:

SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;

Resultado:

        RESULT 
______________ 
COFFEE TIME   

Especifique una colación

Aquí hay un ejemplo que demuestra cómo especificar una intercalación puede alterar los resultados:

SELECT 
    NLS_UPPER('fasilə') AS r1,
    NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Resultado:

       R1        R2 
_________ _________ 
FASILƏ    FASİLƏ   

Observe que la segunda columna usa una letra mayúscula punteada I carácter, que se adhiere al sistema de escritura azerbaiyano.

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_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) 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.

Valores nulos

Pasando null devuelve null :

SELECT
    NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_UPPER('fasilə', null) AS r2,
    NLS_UPPER(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_UPPER() sin pasar ningún argumento devuelve un error:

SELECT NLS_UPPER()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NLS_UPPER()
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 da como resultado un error:

SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL
Error at Command Line : 1 Column : 55
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action: