I Oracle, NLSSORT()
funktion returnerar en sorteringsnyckel för ett givet teckenvärde och en explicit eller implicit specificerad sortering.
Funktionen kan vara användbar för att utföra jämförelser mot strängvärden baserat på en specificerad sammanställning.
Syntax
Syntaxen ser ut så här:
NLSSORT(char [, 'nlsparam' ])
Där både char
och 'nlsparam
' kan vara vilken som helst av datatyperna CHAR
, VARCHAR2
, NCHAR
, eller NVARCHAR2
.
'nlsparam'
argument kan ha följande form:
'NLS_SORT = collation'
Där collation
är namnet på en språklig sammanställning eller BINARY
.
NLSSORT()
använder den angivna sorteringen för att generera sorteringsnyckeln. Om du utelämnar "nlsparam
', då använder funktionen den härledda sammanställningen av argumentet char
.
Exempel
Här är ett exempel på ett returvärde för funktionen:
SELECT
NLSSORT('Chess') AS Result
FROM DUAL;
Resultat:
RESULT _______________ 436865737300
Ange en sortering
I det här exemplet anger jag en sortering:
SELECT
NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;
Resultat:
RESULT _______________________________ 691E37141E370003010101010100
Jämföra två strängar
Här är ett exempel på hur NSSORT()
funktion kan användas för att jämföra två strängar baserat på deras språkregler:
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
Nullvärden
Skickar null
returnerar 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 returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Inkorrekt antal argument
Anropar NLSSORT()
utan att skicka några argument returnerar ett fel:
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:
Och att skicka för många argument resulterar i ett fel:
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:
Mer information
Se Oracle SQL Language Reference för mer information om NLSSORT()
funktion.