sql >> Databasteknik >  >> RDS >> Oracle

NLSSORT() Funktion i Oracle

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.


  1. Hur använder man osignerade int/long-typer med Entity Framework?

  2. Felsökning av MySQL-replikering:Del ett

  3. Hur man skapar Array i PostgreSQL

  4. Hur listar du primärnyckeln för en SQL Server-tabell?