No Oracle, o
NLSSORT()
A função retorna uma chave de agrupamento para um determinado valor de caractere e um agrupamento especificado explicitamente ou implicitamente. A função pode ser útil para realizar comparações com valores de string com base em um agrupamento especificado.
Sintaxe
A sintaxe fica assim:
NLSSORT(char [, 'nlsparam' ])
Onde ambos
char
e 'nlsparam
‘ pode ser qualquer um dos tipos de dados CHAR
, VARCHAR2
, NCHAR
, ou NVARCHAR2
. O
'nlsparam'
argumento pode ter a seguinte forma:'NLS_SORT = collation'
Onde
collation
é o nome de um agrupamento linguístico ou BINARY
. NLSSORT()
usa a ordenação especificada para gerar a chave de ordenação. Se você omitir ‘nlsparam
‘, então a função usa o agrupamento derivado do argumento char
. Exemplo
Aqui está um exemplo de um valor de retorno da função:
SELECT
NLSSORT('Chess') AS Result
FROM DUAL;
Resultado:
RESULT _______________ 436865737300
Especificar um agrupamento
Neste exemplo, especifico um agrupamento:
SELECT
NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;
Resultado:
RESULT _______________________________ 691E37141E370003010101010100
Comparando duas strings
Aqui está um exemplo de como o
NSSORT()
pode ser usada para comparar duas strings com base em suas regras de linguagem: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
Passando
null
retorna 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
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que
null
ocorre como resultado de um SQL SELECT
demonstração. No entanto, você pode usar
SET NULL
para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null
deve ser devolvido. Contagem incorreta de argumentos
Chamando
NLSSORT()
sem passar nenhum argumento retorna um erro: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:
E passar muitos argumentos resulta em um erro:
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:
Mais informações
Consulte o Oracle SQL Language Reference para obter mais informações sobre o
NLSSORT()
função.