Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction NLSSORT() dans Oracle

Dans Oracle, le NLSSORT() renvoie une clé de classement pour une valeur de caractère donnée et un classement spécifié explicitement ou implicitement.

La fonction peut être utile pour effectuer des comparaisons avec des valeurs de chaîne basées sur un classement spécifié.

Syntaxe

La syntaxe ressemble à ceci :

NLSSORT(char [, 'nlsparam' ])

Où les deux char et 'nlsparam ‘ peut être n'importe lequel des types de données CHAR , VARCHAR2 , NCHAR , ou NVARCHAR2 .

Le 'nlsparam' l'argument peut avoir la forme suivante :

'NLS_SORT = collation'

collation est le nom d'une collation linguistique ou BINARY .

NLSSORT() utilise le classement spécifié pour générer la clé de classement. Si vous omettez 'nlsparam ', alors la fonction utilise le classement dérivé de l'argument char .

Exemple

Voici un exemple de valeur de retour de la fonction :

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

Résultat :

         RESULT 
_______________ 
436865737300   

Spécifier un classement

Dans cet exemple, je spécifie un classement :

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

Résultat :

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

Comparer deux chaînes

Voici un exemple de la façon dont le NSSORT() La fonction peut être utilisée pour comparer deux chaînes en fonction de leurs règles linguistiques :

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;

Résultat :

Yes

Valeurs nulles

Passer null renvoie null :

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

Résultat :

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null se produit à la suite d'un SQL SELECT déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Nombre d'arguments incorrects

Appel de NLSSORT() sans passer d'argument renvoie une erreur :

SELECT NLSSORT()
FROM DUAL;

Résultat :

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:

Et passer trop d'arguments entraîne une erreur :

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

Résultat :

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:

Plus d'informations

Voir la référence du langage Oracle SQL pour plus d'informations sur le NLSSORT() fonction.