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'
Où 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.