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.