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.