Oracle
 sql >> Datenbank >  >> RDS >> Oracle

NLSSORT()-Funktion in Oracle

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.