Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função NLSSORT() no Oracle


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.