I Oracle er NLSSORT()
funktion returnerer en sorteringsnøgle for en given tegnværdi og en eksplicit eller implicit specificeret sortering.
Funktionen kan være nyttig til at udføre sammenligninger med strengværdier baseret på en specificeret sortering.
Syntaks
Syntaksen ser sådan ud:
NLSSORT(char [, 'nlsparam' ])
Hvor både char
og ‘nlsparam
' kan være enhver af datatyperne CHAR
, VARCHAR2
, NCHAR
eller NVARCHAR2
.
'nlsparam'
argument kan have følgende form:
'NLS_SORT = collation'
Hvor collation
er navnet på en sproglig samling eller BINARY
.
NLSSORT()
bruger den angivne sortering til at generere sorteringsnøglen. Hvis du udelader 'nlsparam
’, så bruger funktionen den afledte kollation af argumentet char
.
Eksempel
Her er et eksempel på en returværdi for funktionen:
SELECT
NLSSORT('Chess') AS Result
FROM DUAL;
Resultat:
RESULT _______________ 436865737300
Angiv en sortering
I dette eksempel angiver jeg en sortering:
SELECT
NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;
Resultat:
RESULT _______________________________ 691E37141E370003010101010100
Sammenligning af to strenge
Her er et eksempel på, hvordan NSSORT()
funktion kan bruges til at sammenligne to strenge baseret på deres sprogregler:
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;
Resultat:
Yes
Nul-værdier
Sender null
returnerer null
:
SELECT
NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLSSORT('fasilə', null) AS r2,
NLSSORT(null, null) AS r3
FROM DUAL;
Resultat:
R1 R2 R3 _______ _______ _______ null null null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Forkert antal argumenter
Kalder NLSSORT()
uden at sende nogen argumenter returnerer en fejl:
SELECT NLSSORT()
FROM DUAL;
Resultat:
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:
Og at sende for mange argumenter resulterer i en fejl:
SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;
Resultat:
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:
Flere oplysninger
Se Oracle SQL Language Reference for flere oplysninger om NLSSORT()
funktion.