W Oracle NLSSORT() funkcja zwraca klucz sortowania dla podanej wartości znaku oraz jawnie lub niejawnie określone sortowanie.
Funkcja może być przydatna do wykonywania porównań z wartościami ciągów na podstawie określonego sortowania.
Składnia
Składnia wygląda tak:
NLSSORT(char [, 'nlsparam' ])
Gdzie oba char i „nlsparam ‘ może być dowolnym typem danych CHAR , VARCHAR2 , NCHAR lub NVARCHAR2 .
'nlsparam' argument może mieć następującą postać:
'NLS_SORT = collation'
Gdzie collation to nazwa zestawienia językowego lub BINARY .
NLSSORT() używa określonego sortowania do wygenerowania klucza sortowania. Jeśli pominiesz „nlsparam ‘, wtedy funkcja używa wyprowadzonego sortowania argumentu char .
Przykład
Oto przykład wartości zwracanej przez funkcję:
SELECT
NLSSORT('Chess') AS Result
FROM DUAL; Wynik:
RESULT _______________ 436865737300
Określ sortowanie
W tym przykładzie określam sortowanie:
SELECT
NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL; Wynik:
RESULT _______________________________ 691E37141E370003010101010100
Porównywanie dwóch ciągów
Oto przykład, jak NSSORT() funkcja może być użyta do porównania dwóch ciągów na podstawie ich reguł językowych:
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; Wynik:
Yes
Wartości puste
Przekazywanie null zwraca null :
SELECT
NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLSSORT('fasilə', null) AS r2,
NLSSORT(null, null) AS r3
FROM DUAL; Wynik:
R1 R2 R3 _______ _______ _______ null null null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.
Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.
Nieprawidłowa liczba argumentów
Wywołanie NLSSORT() bez przekazywania żadnych argumentów zwraca błąd:
SELECT NLSSORT()
FROM DUAL; Wynik:
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 przekazanie zbyt wielu argumentów skutkuje błędem:
SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL; Wynik:
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: Więcej informacji
Zobacz Oracle SQL Language Reference, aby uzyskać więcej informacji o NLSSORT() funkcja.