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.