Le traitement de la case

Les opérateurs logiques de comparaison qui utilisent des expressions de types caractères sont soumis par défaut à tenir compte de majuscules/minuscules et des accents. Il est possible de s’affranchir de la sensibilité majuscules/minuscules ou des accents par la configuration de notre session. Les valeurs combinées des paramètres « NLS_COMP » et « NLS_SORT » déterminent les règles selon lesquelles les caractères sont triés et comparés.

en savoir

Pour modifier les paramètres de sa propre session, vous pouvez utiliser la syntaxe suivante :

   ALTER SESSION SET paramètre = valeur ;

Le paramètre « NLS_COMP » détermine la façon dont « NLS_SORT » est interprèté par les instructions SQL. Il peut avoir deux valeurs :

BINARY                           Tous les tris et les comparaisons sont effectués suivant les valeurs binaires des caractères de la chaîne, quelque soit la valeur fixée pour « NLS_SORT ». C'est le paramètre par défaut.

LINGUISTIC                  Tous les tris et les comparaisons sont effectués suivant les règles linguistiques spécifiées par le paramètre « NLS_SORT ».

Le paramètre « NLS_SORT » peut avoir plusieurs valeurs :

BINARY                           Tous les tris et les comparaisons sont effectués suivant les valeurs binaires des caractères de la chaîne.

langue                           Tous les tris et les comparaisons sont effectués suivant les règles linguistiques spécifiques à chaque langue. Vous pouvez utiliser : « FRENCH », « GERMAN », « SLOVAK », « SPANISH », « SWISS », « UNICODE_BINARY », « WEST_EUROPEAN », etc. Par défaut, le paramètre est initialisé par les options régionales du poste client.

La valeur du paramètre, qu’il s’agisse de « BINARY » ou « langue », peut comporter deux suffixes :

_CI                                  Tous les tris et les comparaisons sont effectués sans tenir compte de la sensibilité majuscules/minuscules.

_AI                                  Tous les tris et les comparaisons sont effectués sans tenir compte de la sensibilité majuscules/minuscules et sans la sensibilité aux accents.

Pour visualiser les deux paramètres « NLS_COMP » et « NLS_SORT », vous pouvez interroger la vue « V$NLS_PARAMETERS ».

SQL> SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER like 'NLS__O__';

 

PARAMETER    VALUE

------------ -------------------------------------------------------

NLS_SORT     BINARY_AI

NLS_COMP     LINGUISTIC

La requête suivante est une sélection de la table EMPLOYES pour extraire les employés qui ont un prénom qui commence par le caractère 'R' ; les enregistrements sont tries sur le prénom. Vous pouvez remarquer que l’ordre de tri suivant les valeurs binaires des caractères de la chaîne ne correspond pas à la langue française.

SQL> ALTER SESSION SET NLS_COMP=BINARY NLS_SORT=BINARY;

 

SQL> SELECT PRENOM FROM EMPLOYES WHERE PRENOM LIKE 'R%' ORDER BY 1 ;

 

PRENOM

------------------------------

René

Renée

Robert

Régis

 

SQL> ALTER SESSION SET NLS_SORT=FRENCH;

 

SQL> SELECT PRENOM FROM EMPLOYES WHERE PRENOM LIKE 'R%' ORDER BY 1 ;

 

PRENOM

------------------------------

Régis

René

Renée

Robert

La requête suivante est une sélection de la table EMPLOYES pour extraire les employés qui ont un prénom qui contient le caractère 'e' et commence par 'r'.

SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC NLS_SORT=BINARY;

 

SQL> SELECT PRENOM FROM EMPLOYES

  2  WHERE PRENOM LIKE 'r%e%' ORDER BY PRENOM;

 

aucune ligne sélectionnée

 

SQL> ALTER SESSION SET NLS_SORT=BINARY_CI;

 

SQL> SELECT PRENOM FROM EMPLOYES

  2  WHERE PRENOM LIKE 'r%e%' ORDER BY PRENOM;

 

PRENOM

------------------------------

René

Renée

Robert

 

SQL> ALTER SESSION SET NLS_SORT=BINARY_AI;

 

SQL> SELECT PRENOM FROM EMPLOYES

  2  WHERE PRENOM LIKE 'r%e%' ORDER BY PRENOM;

 

PRENOM

------------------------------

Régis

René

Renée

Robert