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

NLSSORT() Funzione in Oracle

In Oracle, il NLSSORT() La funzione restituisce una chiave di confronto per un determinato valore di carattere e un confronto specificato in modo esplicito o implicito.

La funzione può essere utile per eseguire confronti con valori di stringa basati su regole di confronto specificate.

Sintassi

La sintassi è questa:

NLSSORT(char [, 'nlsparam' ])

Dove entrambi char e 'nlsparam ' può essere uno qualsiasi dei tipi di dati CHAR , VARCHAR2 , NCHAR o NVARCHAR2 .

Il 'nlsparam' argomento può avere la forma seguente:

'NLS_SORT = collation'

Dove collation è il nome di una confronto linguistico o BINARY .

NLSSORT() utilizza le regole di confronto specificate per generare la chiave di confronto. Se ometti "nlsparam ', quindi la funzione usa le regole di confronto derivate dell'argomento char .

Esempio

Ecco un esempio di un valore di ritorno della funzione:

SELECT 
    NLSSORT('Chess') AS Result
FROM DUAL;

Risultato:

         RESULT 
_______________ 
436865737300   

Specifica una confronto

In questo esempio, specifico una confronto:

SELECT 
    NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;

Risultato:

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

Confronto di due stringhe

Ecco un esempio di come il NSSORT() La funzione può essere utilizzata per confrontare due stringhe in base alle loro regole linguistiche:

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;

Risultato:

Yes

Valori Nulli

Passaggio null restituisce null :

SELECT
    NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLSSORT('fasilə', null) AS r2,
    NLSSORT(null, null) AS r3
FROM DUAL;

Risultato:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Conteggio argomenti errato

Chiamando NLSSORT() senza passare alcun argomento restituisce un errore:

SELECT NLSSORT()
FROM DUAL;

Risultato:

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:

E il passaggio di troppi argomenti genera un errore:

SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;

Risultato:

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:

Maggiori informazioni

Per ulteriori informazioni su NLSSORT(), vedere Oracle SQL Language Reference funzione.