sql >> Database teknologi >  >> RDS >> Oracle

NLSSORT() Funktion i Oracle

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.


  1. MySQL - Hvordan SUMMER man tider?

  2. Hvad er nogle måder at få adgang til Microsoft SQL Server fra Linux?

  3. Hurtigere alternativ i Oracle til SELECT COUNT(*) FROM nogetable

  4. CASCADE SLET kun én gang