sql >> Database >  >> RDS >> Oracle

NLSSORT() Functie in Oracle

In Oracle, de NLSSORT() functie retourneert een sorteersleutel voor een gegeven tekenwaarde en een expliciet of impliciet gespecificeerde sortering.

De functie kan handig zijn voor het uitvoeren van vergelijkingen met tekenreekswaarden op basis van een opgegeven sortering.

Syntaxis

De syntaxis gaat als volgt:

NLSSORT(char [, 'nlsparam' ])

Waar beide char en 'nlsparam ' kan elk van de gegevenstypen zijn CHAR , VARCHAR2 , NCHAR , of NVARCHAR2 .

De 'nlsparam' argument kan de volgende vorm hebben:

'NLS_SORT = collation'

Waar collation is de naam van een taalkundige sortering of BINARY .

NLSSORT() gebruikt de opgegeven sortering om de sorteersleutel te genereren. Als u 'nlsparam . weglaat ', dan gebruikt de functie de afgeleide sortering van het argument char .

Voorbeeld

Hier is een voorbeeld van een retourwaarde van de functie:

SELECT 
    NLSSORT('Chess') AS Result
FROM DUAL;

Resultaat:

         RESULT 
_______________ 
436865737300   

Geef een sortering op

In dit voorbeeld specificeer ik een sortering:

SELECT 
    NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;

Resultaat:

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

Twee snaren vergelijken

Hier is een voorbeeld van hoe de NSSORT() functie kan worden gebruikt om twee strings te vergelijken op basis van hun taalregels:

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;

Resultaat:

Yes

Null-waarden

Doorgeven van null retourneert null :

SELECT
    NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLSSORT('fasilə', null) AS r2,
    NLSSORT(null, null) AS r3
FROM DUAL;

Resultaat:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Onjuist aantal argumenten

Aanroepen van NLSSORT() zonder het doorgeven van argumenten geeft een fout:

SELECT NLSSORT()
FROM DUAL;

Resultaat:

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:

En het doorgeven van te veel argumenten resulteert in een fout:

SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;

Resultaat:

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:

Meer informatie

Zie de Oracle SQL Language Reference voor meer informatie over de NLSSORT() functie.


  1. Wat is de beste manier om Polymorphic Association in SQL Server te implementeren?

  2. SQLAlchemy meerdere externe sleutels in één toegewezen klasse aan dezelfde primaire sleutel

  3. Automatische updates van statistieken bijhouden

  4. Hoe krijg ik de id na INSERT in MySQL-database met Python?