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

Función NLSSORT() en Oracle

En Oracle, el NLSSORT() La función devuelve una clave de clasificación para un valor de carácter dado y una clasificación explícita o implícitamente especificada.

La función puede ser útil para realizar comparaciones con valores de cadena en función de una intercalación específica.

Sintaxis

La sintaxis es así:

NLSSORT(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 = collation'

Donde collation es el nombre de una intercalación lingüística o BINARY .

NLSSORT() utiliza la intercalación especificada para generar la clave de intercalación. Si omite ‘nlsparam ‘, entonces la función usa la intercalación derivada del argumento char .

Ejemplo

Aquí hay un ejemplo de un valor de retorno de la función:

SELECT 
    NLSSORT('Chess') AS Result
FROM DUAL;

Resultado:

         RESULT 
_______________ 
436865737300   

Especifique una colación

En este ejemplo, especifico una intercalación:

SELECT 
    NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;

Resultado:

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

Comparando dos cadenas

Aquí hay un ejemplo de cómo NSSORT() La función se puede usar para comparar dos cadenas en función de sus reglas de idioma:

DECLARE 
    v1 NVARCHAR2(10) := 'Schach';
    v2 NVARCHAR2(10) := 'Schabsel';
BEGIN
    IF NLSSORT(v1, 'NLS_SORT=XGERMAN') > NLSSORT(v2, 'NLS_SORT=XGERMAN') THEN
        DBMS_OUTPUT.PUT_LINE( 'Yes' );
    ELSE
        DBMS_OUTPUT.PUT_LINE( 'No' );
    END IF;
END;

Resultado:

Yes

Valores nulos

Pasando null devuelve null :

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

SELECT NLSSORT()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT NLSSORT()
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 NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;

Resultado:

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

Más información

Consulte la referencia del lenguaje SQL de Oracle para obtener más información sobre NLSSORT() función.