A propos des différents paramètres NLS

De nombreux paramètres NLS individuels sont disponibles.

Voir aussi :

A propos de l'environnement local et du paramètre NLS_LANG

Un paramètre local représente un environnement linguistique et culturel dans lequel s'exécute un système ou une application. Le moyen le plus simple de spécifier un environnement linguistique pour le logiciel Oracle Database est de définir le paramètre NLS_LANG.

Le paramètre NLS_LANG définit les valeurs par défaut des paramètres NLS_LANGUAGE et NLS_TERRITORY pour la session serveur (par exemple, le traitement des instructions SQL) et l'application client (par exemple, le formatage d'affichage dans les outils Oracle Database). Le paramètre NLS_LANG définit également le jeu de caractères que l'application client utilise pour les données saisies ou affichées.

La valeur par défaut de NLS_LANG est définie au cours de l'installation de la base de données. L'instruction ALTER SESSION permet de modifier les valeurs des paramètres NLS, y compris celles qui sont définies par NLS_LANG, pour votre SESSION. Cependant, seul le client peut modifier les paramètres NLS de l'environnement client.

Voir aussi :

A propos du paramètre NLS_LANGUAGE

Ce paramètre indique la langue par défaut de la base de données.

Indique : langue par exemple de la base. Conventions par défaut pour les éléments suivants :

Valeurs acceptables : tout nom de langue pris en charge par Oracle. Pour consulter la liste, reportez-vous au Guide de support à la globalisation Oracle Database.

Valeur par défaut : définie par NLS_LANG, comme décrit à la rubrique "A propos de l'environnement linguistique et du paramètre NLS_LANG".

Définit les valeurs par défaut des paramètres suivants :

L'Example 7-1 décrit la façon dont la définition de NLS_LANGUAGE sur ITALIAN et sur GERMAN affecte les messages serveur et la abréviation de mois.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-1 : NLS_LANGUAGE affecte les messages serveur et les abréviations de mois

  1. Notez la valeur en cours de NLS_LANGUAGE.

  2. Si la valeur de l'étape 1 n'est pas ITALIAN, modifiez-la :

     ALTER SESSION SET NLS_LANGUAGE=ITALIAN;
    
  3. Interrogez un tableau qui n'existe pas :

     SELECT * FROM nonexistent_table;
    

    Résultats :

     SELECT * FROM nonexistent_table
                 *
     ERROR at line 1:
     ORA-00942: tabella o vista inesistente
    
  4. Exécutez la requête suivante :

     SELECT LAST_NAME, HIRE_DATE
     FROM EMPLOYEES
     WHERE EMPLOYEE_ID IN (111, 112, 113);
    

    Résultats :

     LAST_NAME                 HIRE_DATE
    
     ------------------------- ---------
     Sciarra                   30-SET-97
     Urman                     07-MAR-98
     Popp                      07-DIC-99
    
     3 rows selected.
    
  5. Définissez la valeur de NLS_LANGUAGE sur GERMAN :

     ALTER SESSION SET NLS_LANGUAGE=GERMAN;
    
  6. Répétez la requête à partir de l'étape 3.

    Résultats :

     SELECT * FROM nonexistent_table
                 *
     ERROR at line 1:
     ORA-00942: Tabelle oder View nicht vorhanden
    
  7. Répétez la requête à partir de l'étape 4.

    Résultats :

     LAST_NAME                 HIRE_DATE
    
     ------------------------- ---------
     Sciarra                   30-SEP-97
     Urman                     07-MRZ-98
     Popp                      07-DEZ-99
    
     3 rows selected.
    
  8. Rétablissez NLS_LANGUAGE avec la valeur qu'il avait à l'étape 1.

Voir aussi :

A propos du paramètre NLS_TERRITORY

Ce paramètre spécifie les conventions par défaut pour le format de date, le format d'horodatage, le séparateur décimal et de groupe, le symbole de devise locale, le symbole de devise ISO et le symbole de devise double.

Indique : conventions par défaut pour les éléments suivants :

Valeurs acceptables : tout nom de territoire pris en charge par Oracle. Pour consulter la liste, reportez-vous au Guide de support à la globalisation Oracle Database.

Valeur par défaut : définie par NLS_LANG, comme décrit à la rubrique "A propos de l'environnement linguistique et du paramètre NLS_LANG".

Définit les valeurs par défaut des paramètres suivants :

L'Exemple 7-2 montre comment le fait de définir NLS_TERRITORY sur JAPAN et AMERICA affecte le symbole de devise.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-2 : NLS_TERRITORY affecte le symbole de devise

  1. Notez la valeur en cours de NLS_TERRITORY.

  2. Si la valeur de l'étape 1 n'est pas JAPAN, modifiez-la :

     ALTER SESSION SET NLS_TERRITORY=JAPAN;
    
  3. Exécutez la requête suivante :

     SELECT TO_CHAR(SALARY,'L99G999D99') SALARY
     FROM EMPLOYEES
     WHERE EMPLOYEE_ID IN (100, 101, 102);
    

    Résultats :

     SALARY
    
     --------------------
    
             ©24,000.00
    
             ©17,000.00
    
             ©17,000.00
    
     3 rows selected.
    
  4. Modifiez la valeur de NLS_TERRITORY sur AMERICA :

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  5. Répétez la requête à partir de l'étape 3.

    Résultats :

     SALARY
    
     --------------------
    
             $24,000.00
    
             $17,000.00
    
             $17,000.00
    
     3 rows selected.
    
  6. Rétablissez NLS_TERRITORY avec la valeur qu'il avait à l'étape 1.

Voir aussi :

A propos du paramètre NLS_DATE_FORMAT

Ce paramètre indique le format par défaut de date à utiliser avec les fonctions TO_CHAR et TO_DATE.

Indique : format de date par défaut à utiliser avec les fonctions TO_CHAR et TO_DATE (qui sont présentées à la rubrique "Utilisation de fonctions de conversion dans les requêtes").

Valeurs acceptables : tout modèle valide de format de date/heure. Exemple :

NLS_DATE_FORMAT='MM/DD/YYYY'

Pour plus d'informations sur les modèles de format date/heure, reportez-vous au manuel Oracle Database SQL Language Reference.

Valeur par défaut : définie par NLS_TERRITORY, décrite dans la section "A propos du paramètre NLS_TERRITORY".

Il se peut que le format de date par défaut ne corresponde pas à la convention utilisée dans un territoire donné. Pour obtenir des dates dans des formats localisés, vous pouvez utiliser les formats "DS" (date court) et "DL" (date longue) . L'Exemple 7-3 montre comment la définition de NLS_TERRITORY sur AMERICA et FRANCE affecte les formats d'une date par défaut, court et long. L'exemple 7-4 modifie la valeur de NLS_DATE_FORMAT, ce qui remplace la valeur définie par défaut par NLS_TERRITORY.

Pour essayer les exemples de SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-3 : NLS_TERRITORY affecte les formats de date

  1. Notez la valeur en cours de NLS_TERRITORY.

  2. Si la valeur de l'étape 1 n'est pas AMERICA, modifiez-la :

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. Exécutez la requête suivante :

     SELECT hire_date "Default",
         TO_CHAR(hire_date,'DS') "Short",
         TO_CHAR(hire_date,'DL') "Long"
     FROM employees
     WHERE employee_id IN (111, 112, 113);
    

    Résultats :

     Default    Short      Long
    
     --------- ---------- -----------------------------
    
     30-SEP-05 9/30/2005  Friday, September 30, 2005
    
     07-MAR-98 3/7/2006   Tuesday, March 07, 2006
    
     07-DEC-99 12/7/2007  Friday, December 07, 2007
    
     3 rows selected.
    
  4. Remplacez la valeur de NLS_TERRITORY par FRANCE :

     ALTER SESSION SET NLS_TERRITORY=FRANCE;
    
  5. Répétez la requête à partir de l'étape 3.

    Résultats :

     Default  Short      Long
    
     -------- ---------- ---------------------------
    
     30/09/05 30/09/2005 friday 30 september 2005
    
     07/03/06 07/03/2006 tuesday 7 march 2006
    
     07/12/07 07/12/2007 friday 7 december 2007
    
     3 rows selected.
    

    (Pour obtenir les noms des jours et du mois en français, vous devez définir NLS_LANGUAGE ou NLS_DATE_LANGUAGE sur FRENCH avant d'exécuter la requête.)

  6. Rétablissez NLS_TERRITORY avec la valeur qu'il avait à l'étape 1.

Exemple 7-4 : NLS_DATE_FORMAT remplace NLS_TERRITORY

  1. Notez les valeurs en cours de NLS_TERRITORY et de NLS_DATE_FORMAT.

  2. Si la valeur de NLS_TERRITORY de l'étape 1 n'est pas AMERICA, modifiez-la :

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. Si la valeur de NLS_DATE_FORMAT à l'étape 1 n'est pas 'Day Month ddth', modifiez-la :

     ALTER SESSION SET NLS_DATE_FORMAT='Day Month ddth';
    
  4. Exécutez cette requête (étape 3 de l'exemple précédent) :

     SELECT hire_date "Default",
         TO_CHAR(hire_date,'DS') "Short",
         TO_CHAR(hire_date,'DL') "Long"
     FROM employees
     WHERE employee_id IN (111, 112, 113);
    

    Résultats :

     Default                  Short      Long
    
     ------------------------ ---------- -----------------------------
    
     Friday    September 30th 9/30/2005  Tuesday, September 30, 2005
    
     Tuesday   March     07th 3/7/2006   Saturday, March 07, 2006
    
     Friday    December  07th 12/7/2007  Tuesday, December 07, 2007
    
     3 rows selected.
    
  5. Rétablissez NLS_TERRITORY et NLS_DATE_FORMAT avec les valeurs qu'ils avaient à l'étape 1.

Voir aussi :

A propos du paramètre NLS_DATE_LANGUAGE

Ce paramètre spécifie la langue des noms et abréviations des jours et des mois générés par : les fonctions SQL TO_CHAR et TO_DATE, le format de date par défaut (défini par NLS_DATE_FORMAT) et les symboles des équivalents de langue par défaut AM, PM, AD et BC.

Indique : langue des noms et abréviations de jours et mois produits par les éléments suivants :

Valeurs acceptables : tout nom de langue pris en charge par Oracle. Pour consulter la liste, reportez-vous au Guide de support à la globalisation Oracle Database.

Valeur par défaut : définie par NLS_LANGUAGE, décrite dans la section "A propos du paramètre NLS_LANGUAGE".

L'exemple 7-5 décrit la façon dont la définition de NLS_DATE_LANGUAGE sur FRENCH et sur SWEDISH affecte la date système affichée.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-5 : la valeur NLS_DATE_LANGUAGE affecte la valeur SYSDATE affichée

  1. Notez la valeur en cours de NLS_DATE_LANGUAGE.

  2. Si la valeur de NLS_DATE_LANGUAGE à l'étape 1 n'est pas FRENCH, modifiez-la :

     ALTER SESSION SET NLS_DATE_LANGUAGE=FRENCH;
    
  3. Exécutez la requête suivante :

     SELECT TO_CHAR(SYSDATE, 'Day:Dd Month yyyy') "System Date"
     FROM DUAL;
    

    Résultats :

     System Date
    
     --------------------------
    
     Vendredi:28 December   2012
    
  4. Remplacez la valeur de NLS_DATE_LANGUAGE par SWEDISH :

     ALTER SESSION SET NLS_DATE_LANGUAGE=SWEDISH;
    
  5. Répétez la requête à partir de l'étape 3.

    Résultats :

     System Date
    
     -------------------------
    
     Fredag :28 December   2012
    
  6. Rétablissez NLS_DATE_LANGUAGE avec la valeur qu'il avait à l'étape 1.

Voir aussi :

A propos des paramètres NLS_TIMESTAMP_FORMAT et NLS_TIMESTAMP_TZ_FORMAT

Ce paramètre spécifie le format de date par défaut pour la bande audio TIMESTAMP et TIMESTAMP WITH LOCAL TIME ZONEaudiotapeTIMESTAMP WITH LOCAL TIME ZONEaudiotape.

Indiquez : format de date par défaut pour :

Valeurs acceptables : tout modèle valide de format de date/heure. Exemple :

NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH:MI:SS.FF'
NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH:MI:SS.FF TZH:TZM'

Pour plus d'informations sur les modèles de format date/heure, reportez-vous au manuel Oracle Database SQL Language Reference.

Valeur par défaut : définie par NLS_TERRITORY, décrite dans la section "A propos du paramètre NLS_TERRITORY".

Voir aussi :

A propos du paramètre NLS_CALENDAR

Ce paramètre indique le système de calendrier de la base de données.

Indique : système calendaire de la base de données.

Valeurs acceptables : tout système de calendrier pris en charge par Oracle. Pour consulter la liste, reportez-vous au Guide de support à la globalisation Oracle Database.

Valeur par défaut : Gregorian

L'Exemple 7-6 montre comment la définition de NLS_CALENDAR sur 'English Hijrah' et Gregorian affecte la date système affichée.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-6 : la valeur NLS_CALENDAR affecte la valeur SYSDATE affichée

  1. Notez la valeur en cours de NLS_CALENDAR.
  2. Si la valeur de NLS_CALENDAR à l'étape 1 n'est pas 'English Hijrah', modifiez-la :

     ALTER SESSION SET NLS_CALENDAR='English Hijrah';
    
  3. Exécutez la requête suivante :

     SELECT SYSDATE FROM DUAL;
    

    Résultats :

     SYSDATE
    
     -------------------------
    
     17 Safar             1434
    
  4. Remplacez la valeur de NLS_CALENDAR par 'Gregorian' :

     ALTER SESSION SET NLS_CALENDAR='Gregorian';
    
  5. Exécutez la requête suivante :

     SELECT SYSDATE FROM DUAL;
    

    Résultats :

     SYSDATE
    
     ---------
    
     31-DEC-12
    
  6. Rétablissez NLS_CALENDAR avec la valeur qu'il avait à l'étape 1.

Voir aussi :

A propos du paramètre NLS_NUMERIC_CHARACTERS

Ce paramètre spécifie le caractère décimal (qui séduit les parties entière et décimale d'un nombre) et le séparateur de groupes (qui sé sépare les groupes entiers pour distinguer des milliers et des millions, par exemple). Le séparateur des groupes est le caractère renvoyé par l'élément de format numérique G.

Indique : caractère décimal (qui sépare les parties entière et décimale d'un nombre) et séparateur de groupes (qui sépare les groupes entiers pour distinguer les milliers et les millions, par exemple). Le séparateur des groupes est le caractère renvoyé par l'élément de format numérique G.

Valeurs acceptables : toute paire de caractères à un octet différents, n'incluant pas les caractères suivants :

Valeur par défaut : définie par NLS_TERRITORY, décrit dans la section "A propos du paramètre NLS_TERRITORY".

Dans une instruction SQL, vous pouvez représenter un nombre sous deux formes distinctes :

L'Exemple 7-7 montre comment deux paramètres NLS_NUMERIC_CHARACTERS différents influent sur l'affichage du résultat de la même requête.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-7 : NLS_NUMERIC_CHARACTERS modifie la marque décimale et le séparateur de groupe

  1. Notez la valeur en cours de NLS_NUMERIC_CHARACTERS.
  2. Si la valeur de NLS_NUMERIC_CHARACTERS de l'étape 1 n'est pas ",." (la valeur décimale est la virgule et la valeur du séparateur de groupe est le points), modifiez-la :

     ALTER SESSION SET NLS_NUMERIC_CHARACTERS=",.";
    
  3. Exécutez la requête suivante :

     SELECT TO_CHAR(4000, '9G999D99') "Number" FROM DUAL;
    

    Résultats :

     Number
    
     ---------
     4.000,00
    
  4. Modifiez la valeur de NLS_NUMERIC_CHARACTERS sur ",." (la virgule décimale est la virgule et la virgule le séparateur des groupes) :

     ALTER SESSION SET NLS_NUMERIC_CHARACTERS=".,";
    
  5. Exécutez la requête suivante :

     SELECT TO_CHAR(4000, '9G999D99') "Number" FROM DUAL;
    

    Résultats :

     Number
    
     ---------
     4,000.00
    
  6. Rétablissez NLS_NUMERIC_CHARACTERS avec la valeur qu'il avait à l'étape 1.

Voir aussi :

A propos du paramètre NLS_CURRENCY

Ce paramètre spécifie le symbole de la devise locale (la chaîne de caractères renvoyée par l'élément du format numérique L).

Indique : symbole monétaire local (chaîne de caractères renvoyée par l'élément de format numérique L).

Valeurs acceptables : toute chaîne de symbole monétaire valide.

Valeur par défaut : définie par NLS_TERRITORY, décrite dans la section "A propos du paramètre NLS_TERRITORY".

L'exemple 7-8 modifie la valeur de NLS_CURRENCY, ce qui remplace la valeur définie par défaut par NLS_TERRITORY. Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-8 Remplacements de NLS_CURRENCY NLS_TERRITORY

  1. Notez les valeurs en cours de NLS_TERRITORY et de NLS_CURRENCY.
  2. Si la valeur de NLS_TERRITORY de l'étape 1 n'est pas AMERICA, modifiez-la :

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. Exécutez la requête suivante :

     SELECT TO_CHAR(salary, 'L099G999D99') "Salary"
     FROM EMPLOYEES
     WHERE salary > 13000;
    

    Résultats :

     Salary
    
     ---------------------
    
             $024,000.00
    
             $017,000.00
    
             $017,000.00
    
             $014,000.00
    
             $013,500.00
    
  4. Modifiez la valeur de NLS_CURRENCY en '©' :

     ALTER SESSION SET NLS_CURRENCY='©';
    
  5. Exécutez la requête suivante :

     SELECT TO_CHAR(salary, 'L099G999D99') "Salary"
     FROM EMPLOYEES
     WHERE salary > 13000;
    

    Résultats :

     Salary
    
     ---------------------
    
             ©024,000.00
    
             ©017,000.00
    
             ©017,000.00
    
             ©014,000.00
    
             ©013,500.00
    
  6. Rétablissez NLS_TERRITORY et NLS_CURRENCY avec les valeurs qu'ils avaient à l'étape 1.

Voir aussi :

A propos du paramètre NLS_ISO_CURRENCY

Ce paramètre spécifie le symbole de devise ISO (chaîne renvoyée par l'élément de format numérique C).

Indique : symbole monétaire ISO (chaîne de caractères renvoyée par l'élément de format numérique C).

Valeurs acceptables : toute chaîne de symbole monétaire valide.

Valeur par défaut : définie par NLS_TERRITORY, décrit dans la section "A propos du paramètre NLS_TERRITORY".

Les symboles de devise locale peuvent être ambiguës tandis que les symboles de devise ISO sont uniques. L'exemple 7-9 montre que les territoires AUSTRALIA et AMERICA possèdent le même symbole d'une devise locale mais que des symboles de devise ISO différents sont différents.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-9 NLS_ISO_CURRENCY

  1. Notez les valeurs en cours de NLS_TERRITORY et de NLS_ISO_CURRENCY.
  2. Si la valeur de NLS_TERRITORY à l'étape 1 n'est pas AUSTRALIA, modifiez-la :

     ALTER SESSION SET NLS_TERRITORY=AUSTRALIA;
    
  3. Exécutez la requête suivante :

     SELECT TO_CHAR(salary, 'L099G999D99') "Local",
             TO_CHAR(salary, 'C099G999D99') "ISO"
     FROM EMPLOYEES
     WHERE salary > 15000;
    

    Résultats :

     Local                 ISO
    
     --------------------- ------------------
    
             $024,000.00      AUD024,000.00
    
             $017,000.00      AUD017,000.00
    
             $017,000.00      AUD017,000.00
    
  4. Remplacez la valeur de NLS_TERRITORY par AMERICA :

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  5. Exécutez la requête suivante :

     SELECT TO_CHAR(salary, 'L099G999D99') "Local",
             TO_CHAR(salary, 'C099G999D99') "ISO"
     FROM EMPLOYEES
     WHERE salary > 15000;
    

    Résultats :

     Local                 ISO
    
     --------------------- ------------------
    
             $024,000.00      USD024,000.00
    
             $017,000.00      USD017,000.00
    
             $017,000.00      USD017,000.00
    
  6. Rétablissez NLS_TERRITORY et NLS_ISO_CURRENCY avec les valeurs qu'ils avaient à l'étape 1.

Voir aussi :

A propos du paramètre NLS_DUAL_CURRENCY

Ce paramètre spécifie le symbole d'euro double (introduit pour prendre en charge le symbole d'euro lors du passage à l'euro).

Indique : symbole d'euro double (introduit pour prendre en charge le symbole d'euro au cours de la période d'euro vers l'euro).

Valeurs acceptables : toute chaîne de symbole monétaire valide.

Valeur par défaut : définie par NLS_TERRITORY, décrite dans la section "A propos du paramètre NLS_TERRITORY".

Voir aussi :

A propos du paramètre NLS_SORT

Ce paramètre indique l'ordre de tri (ordre de regroupement) linguistique pour les requêtes qui comportent la clause ORDER BY.

Indique : ordre de tri linguistique (ordre de regroupement) pour les requêtes qui comportent la clause ORDER BY.

Valeurs acceptables:

Valeur par défaut : définie par NLS_LANGUAGE, décrite dans la section "A propos du paramètre NLS_LANGUAGE".

L'exemple 7-10 décrit comment deux paramètres NLS_SORT différents affectent le résultat affiché pour la même requête. Il s'agit des paramètres BINARY et Espagnol traditionnel (SPANISH_M). L'espagnol traditionnel traite ch, ll et ñ comme des lettres qui suivent c, l et n, respectivement.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Les tris ne sont pas sensibles à la casse et aux accents

Les opérations effectuées dans Oracle Database sont sensibles à la casse et à l'accentuation des caractères. Pour procéder au tri non sensible à l' casse, ajoutez _CI à la valeur du paramètre NLS_SORT (par exemple, BINARY_CI ou GERMAN_CI). Pour effectuer un tri qui ne respecte pas la casse et l'accentuation des caractères, ajoutez _AI à la valeur du paramètre NLS_SORT (par exemple, BINARY_AI ou FRENCH_M_AI).

Exemple 7-10 : NLS_SORT affecte l'ordre de tri linguistique

  1. Créez une table de mots espagnols :

     CREATE TABLE temp (name VARCHAR2(15));
    
  2. Remplissez la table avec des mots espagnols :

     INSERT INTO temp (name) VALUES ('laguna');
     INSERT INTO temp (name) VALUES ('llama');
     INSERT INTO temp (name) VALUES ('loco');
    
  3. Notez la valeur en cours de NLS_SORT.
  4. Si la valeur de NLS_SORT de l'étape 3 n'est pas BINARY, modifiez-la :

     ALTER SESSION SET NLS_SORT=BINARY;
    
  5. Exécutez la requête suivante :

     SELECT * FROM temp ORDER BY name;
    

    Résultats :

     NAME
    
     ---------------
     laguna
    
     llama
    
     loco
    
  6. Modifiez la valeur de NLS_SORT sur SPANISH_M (espagnol traditionnel) :

     ALTER SESSION SET NLS_SORT=SPANISH_M;
    
  7. Répétez la requête à partir de l'étape 5.

    Résultats :

     NAME
    
     ---------------
     laguna
    
     loco
    
     llama
    
  8. Supprimez la table :

     DROP TABLE temp;
    
  9. Rétablissez NLS_SORT avec la valeur qu'il avait à l'étape 3.

Voir aussi :

A propos du paramètre NLS_COMP

Ce paramètre indique le comportement de comparaison de caractères des opérations SQL.

Indique : comportement de comparaison de caractères des opérations SQL.

Valeurs acceptables:

Valeur par défaut : BINARY

L'exemple 7-11 illustre comment le résultat d'une requête peut dépendre du paramètre NLS_COMP.

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

L'exemple 7-11 NLS_COMP a des conséquences sur la comparaison de caractères SQL

  1. Notez les valeurs en cours de NLS_SORT et NLS_COMP.
  2. Si les valeurs de NLS_SORT et de NLS_COMP à l'étape 1 ne sont pas respectivement SPANISH_M (espagnol traditionnel) et BINARY, modifiez-les :

     ALTER SESSION SET NLS_SORT=SPANISH_M NLS_COMP=BINARY;
    
  3. Exécutez la requête suivante :

     SELECT LAST_NAME FROM EMPLOYEES
     WHERE LAST_NAME LIKE 'C%';
    

    Résultats :

     LAST_NAME
    
     -------------------------
     Cabrio
     Cambrault
     Cambrault
     Chen
     Chung
     Colmenares
    
     6 rows selected
    
  4. Modifiez la valeur de NLS_COMP en LINGUISTIC :

     ALTER SESSION SET NLS_COMP=LINGUISTIC;
    
  5. Répétez la requête à partir de l'étape 3.

    Résultats :

     LAST_NAME
    
     -------------------------
     Cabrio
     Cambrault
     Cambrault
     Colmenares
    
     4 rows selected
    

    Cette fois, Chen et Chung ne sont pas renvoyés car l'espagnol traditionnel traite ch comme un caractère unique qui suit c.

  6. Rétablissez NLS_SORT et NLS_COMP avec les valeurs qu'ils possédaient à l'étape 1.

Voir aussi :

A propos du paramètre NLS_LENGTH_SEMANTICS

Ce paramètre spécifie la sémantique de la longueur pour des colonnes de types de données alphanumériques CHAR, VARCHAR2 et LONG, c'est-à-dire si ces colonnes sont spécifiées en octets ou en caractères. En d'autres termes, ce paramètre indique si ces colonnes sont spécifiées en octets ou en caractères (s'applique uniquement aux colonnes qui sont déclarées après la définition du paramètre).

Spécifie : sémantique de longueur pour des colonnes de types de données alphanumériques CHAR, VARCHAR2 et LONG, c'est-à-dire que ces colonnes sont spécifiées en octets ou en caractères. En d'autres termes, ce paramètre indique si ces colonnes sont spécifiées en octets ou en caractères (s'applique uniquement aux colonnes qui sont déclarées après la définition du paramètre).

Valeurs acceptables:

Valeur par défaut : BYTE

Pour tester cet exemple dans SQL Developer, entrez les instructions et les requêtes dans la feuille de calcul. Pour plus d'autres informations sur la feuille de calcul, reportez-vous à la section "Exécution de requêtes dans SQL Developer". Les résultats représentés ici sont générés par SQL*Plus ; leur format est légèrement différent dans SQL Developer.

Exemple 7-12 NLS_LENGTH_SEMANTICS a un impact sur l'emplacement de stockage de la Colonne VARCHAR2

  1. Notez les valeurs en cours de NLS_LENGTH_SEMANTICS.
  2. Si la valeur de NLS_LENGTH_SEMANTICS à l'étape 1 n'est pas BYTE, modifiez-la :

     ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE;
    
  3. Créez une table avec une colonne VARCHAR2 :

     CREATE TABLE SEMANTICS_BYTE(SOME_DATA VARCHAR2(20));
    
  4. Cliquez sur l'onglet Connexions.

  5. Dans le cadre Connexions, développez hr_conn.

  6. Dans la liste des types d'objet de schéma, développez Tables.

  7. Dans la liste des tables, sélectionnez SEMANTICS_BYTE.

    A droite du volet Connexions, le panneau Colonnes affiche SOME_DATA pour la colonne Nom de colonne et le type des données est VARCHAR2(20 BYTE).

  8. Modifiez la valeur de NLS_LENGTH_SEMANTICS en CHAR :

     ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR;
    
  9. Créez une autre table avec une colonne VARCHAR2 :

     CREATE TABLE SEMANTICS_CHAR(SOME_DATA VARCHAR2(20));
    
  10. Dans le cadre Connexions, cliquez sur l'icône Actualiser.

    La liste des tables comporte désormais SEMANTICS_CHAR.

  11. Sélectionnez SEMANTICS_CHAR.

    Le panneau Colonnes affiche SOME_DATA pour la colonne Nom et le type de données est VARCHAR2(20 CHAR).

  12. Sélectionnez à nouveau SEMANTICS_BYTE.

    Le panneau Colonnes affiche le nom de colonne SOME_DATA pour que le type de données soit toujours VARCHAR2(20 BYTE).

  13. Rétablissez la valeur de NLS_LENGTH_SEMANTICS avec la valeur qu'il avait à l'étape 1.

Voir aussi :