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

Función NLS_LOWER() en Oracle

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

Es similar al LOWER() 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_LOWER(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_LOWER('HOMER SYMPTOM') AS Result
FROM DUAL;

Resultado:

          RESULT 
________________ 
homer symptom   

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

SELECT NLS_LOWER('Homer Symptom') AS Result
FROM DUAL;

Resultado:

          RESULT 
________________ 
homer symptom   

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

SELECT NLS_LOWER('homer symptom') AS Result
FROM DUAL;

Resultado:

          RESULT 
________________ 
homer symptom   

Especifique una colación

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

SELECT 
    NLS_LOWER('BALIQ') AS r1,
    NLS_LOWER('BALIQ', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Resultado:

      R1       R2 
________ ________ 
baliq    balıq   

Observe que la segunda columna usa una minúscula sin puntos 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_LOWER('BALIQ', '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_LOWER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_LOWER('BALIQ', null) AS r2,
    NLS_LOWER(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_LOWER() sin pasar ningún argumento devuelve un error:

SELECT NLS_LOWER()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NLS_LOWER()
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_LOWER('Homer', 'NLS_SORT = XAZERBAIJANI', 'Symptom')
FROM DUAL;

Resultado:

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