sql >> Databáze >  >> RDS >> Oracle

Funkce NLSSORT() v Oracle

V Oracle je to NLSSORT() funkce vrací klíč řazení pro danou hodnotu znaku a explicitně nebo implicitně specifikované řazení.

Funkce může být užitečná pro provádění porovnání s řetězcovými hodnotami na základě zadaného řazení.

Syntaxe

Syntaxe vypadá takto:

NLSSORT(char [, 'nlsparam' ])

Kde oba char a „nlsparam ‘ může být jakýkoli z datových typů CHAR , VARCHAR2 , NCHAR nebo NVARCHAR2 .

'nlsparam' argument může mít následující tvar:

'NLS_SORT = collation'

Kde collation je název lingvistického řazení nebo BINARY .

NLSSORT() používá zadané řazení ke generování klíče řazení. Pokud vynecháte „nlsparam ‘, pak funkce použije odvozené řazení argumentu char .

Příklad

Zde je příklad návratové hodnoty funkce:

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

Výsledek:

         RESULT 
_______________ 
436865737300   

Zadejte řazení

V tomto příkladu zadávám řazení:

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

Výsledek:

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

Porovnání dvou řetězců

Zde je příklad toho, jak NSSORT() funkci lze použít k porovnání dvou řetězců na základě jejich jazykových pravidel:

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;

Výsledek:

Yes

Nulové hodnoty

Předávání null vrátí null :

SELECT
    NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLSSORT('fasilə', null) AS r2,
    NLSSORT(null, null) AS r3
FROM DUAL;

Výsledek:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Nesprávný počet argumentů

Volání NLSSORT() bez předání jakýchkoli argumentů vrátí chybu:

SELECT NLSSORT()
FROM DUAL;

Výsledek:

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:

A předání příliš mnoha argumentů vede k chybě:

SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;

Výsledek:

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:

Další informace

Další informace o NLSSORT() naleznete v příručce Oracle SQL Language Reference funkce.


  1. Převeďte řetězec oddělený čárkami na pole v PL/SQL

  2. Začínáme s SQL Server 2017 na Linuxu na Azure Portal

  3. Oprava „Aritmetická chyba přetečení při převodu IDENTITY na datový typ…“ v SQL Server

  4. Aktualizace tabulky v Oracle, pokud je nějaká hodnota pole nulová a určení, zda je aktualizace úspěšná