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.