In Oracle das NLSSORT()
Die Funktion gibt einen Kollatierungsschlüssel für einen gegebenen Zeichenwert und eine explizit oder implizit angegebene Kollatierung zurück.
Die Funktion kann nützlich sein, um Vergleiche mit Zeichenfolgenwerten basierend auf einer angegebenen Sortierung durchzuführen.
Syntax
Die Syntax lautet wie folgt:
NLSSORT(char [, 'nlsparam' ])
Wobei beide char
und ‘nlsparam
‘ kann jeder der Datentypen CHAR
sein , VARCHAR2
, NCHAR
, oder NVARCHAR2
.
Der 'nlsparam'
Argument kann die folgende Form haben:
'NLS_SORT = collation'
Wobei collation
ist der Name einer linguistischen Sortierung oder BINARY
.
NLSSORT()
verwendet die angegebene Sortierung, um den Sortierungsschlüssel zu generieren. Wenn Sie „nlsparam
‘, dann verwendet die Funktion die abgeleitete Sortierung des Arguments char
.
Beispiel
Hier ist ein Beispiel für einen Rückgabewert der Funktion:
SELECT
NLSSORT('Chess') AS Result
FROM DUAL;
Ergebnis:
RESULT _______________ 436865737300
Geben Sie eine Sortierung an
In diesem Beispiel gebe ich eine Sortierung an:
SELECT
NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;
Ergebnis:
RESULT _______________________________ 691E37141E370003010101010100
Zwei Zeichenfolgen vergleichen
Hier ist ein Beispiel dafür, wie der NSSORT()
Funktion kann verwendet werden, um zwei Strings basierend auf ihren Sprachregeln zu vergleichen:
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;
Ergebnis:
Yes
Nullwerte
Übergabe von null
gibt null
zurück :
SELECT
NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLSSORT('fasilə', null) AS r2,
NLSSORT(null, null) AS r3
FROM DUAL;
Ergebnis:
R1 R2 R3 _______ _______ _______ null null null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null
tritt als Ergebnis eines SQL SELECT
auf Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Falsche Argumentanzahl
Aufruf von NLSSORT()
ohne Übergabe von Argumenten gibt einen Fehler zurück:
SELECT NLSSORT()
FROM DUAL;
Ergebnis:
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:
Und das Übergeben zu vieler Argumente führt zu einem Fehler:
SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;
Ergebnis:
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:
Weitere Informationen
Weitere Informationen zu NLSSORT()
finden Sie in der Oracle SQL-Sprachreferenz Funktion.