À propos des paramètres NLS individuels

De nombreux paramètres NLS individuels sont disponibles.

Voir aussi :

À propos des paramètres régionaux et du paramètre NLS_LANG

Un environnement local est un environnement linguistique et culturel dans lequel s'exécute un système ou une application. Le moyen le plus simple de spécifier des paramètres régionaux pour le logiciel Oracle Database consiste à 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, afficher le formatage dans les outils Oracle Database). Le paramètre NLS_LANG définit également le jeu de caractères utilisé par l'application client pour les données entrées ou affichées.

La valeur par défaut de NLS_LANG est définie lors de l'installation de la base de données. Vous pouvez utiliser l'instruction ALTER SESSION pour modifier les valeurs des paramètres NLS, y compris celles définies par NLS_LANG, pour votre SESSION. Toutefois, seul le client peut modifier les paramètres NLS dans l'environnement client.

Voir aussi :

À propos du paramètre NLS_LANGUAGE

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

Spécifie : Langue par défaut de la base de données. Conventions par défaut pour :

Valeurs acceptables : Tout nom de langue pris en charge par Oracle. Pour obtenir une liste, voir Guide de prise en charge de la globalisation pour Oracle Database.

Valeur par défaut : Définie par NLS_LANG, décrite dans "À propos des paramètres régionaux et du paramètre NLS_LANG".

Définit les valeurs par défaut de :

Exemple 7-1 montre comment le réglage de NLS_LANGUAGE à ITALIAN et GERMAN affecte les messages du serveur et les abréviations de mois.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

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

  1. Notez la valeur actuelle 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 une table inexistante :

     SELECT * FROM nonexistent_table;
    

    Résultat :

     SELECT * FROM nonexistent_table
                 *
     ERROR at line 1:
     ORA-00942: tabella o vista inesistente
    
  4. Exécutez l'interrogation suivante :

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

    Résultat :

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

     ALTER SESSION SET NLS_LANGUAGE=GERMAN;
    
  6. Répétez l'interrogation à l'étape 3.

    Résultat :

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

    Résultat :

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

Voir aussi :

À 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.

Précise : Conventions par défaut pour :

Valeurs acceptables : Tout nom de territoire pris en charge par Oracle. Pour obtenir une liste, voir Guide de prise en charge de la globalisation pour Oracle Database.

Valeur par défaut : Définie par NLS_LANG, décrite dans "À propos des paramètres régionaux et du paramètre NLS_LANG".

Définit les valeurs par défaut de :

Exemple 7-2 montre comment le réglage de NLS_TERRITORY à JAPAN et AMERICA affecte le symbole de devise.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de 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 actuelle 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 l'interrogation suivante :

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

    Résultat :

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

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  5. Répétez l'interrogation à l'étape 3.

    Résultat :

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

Voir aussi :

À propos du paramètre NLS_DATE_FORMAT

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

Spécifie : Format de date par défaut à utiliser avec les fonctions TO_CHAR et TO_DATE (introduites dans "Utilisation des fonctions de conversion dans les interrogations").

Valeurs acceptables : Tout modèle de format date-heure valide. Par exemple :

NLS_DATE_FORMAT='MM/DD/YYYY'

Pour plus d'informations sur les modèles de format date-heure, voir Informations de référence sur le langage SQL pour Oracle Database.

Valeur par défaut : Définie par NLS_TERRITORY, décrite dans "À propos du paramètre NLS_TERRITORY".

Le format de date par défaut peut ne pas correspondre à la convention utilisée dans un territoire donné. Pour obtenir des dates dans des formats localisés, vous pouvez utiliser les formats 'DS' (date courte) et 'DL' (date longue). Exemple 7-3 montre comment le réglage de NLS_TERRITORY à AMERICA et FRANCE affecte les formats de date par défaut, abrégée et longue. Exemple 7-4 modifie la valeur de NLS_DATE_FORMAT, remplaçant la valeur par défaut définie par NLS_TERRITORY.

Pour tester les exemples dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de 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 actuelle 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 l'interrogation 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ésultat :

     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 l'interrogation à l'étape 3.

    Résultat :

     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 des mois en français, vous devez régler NLS_LANGUAGE ou NLS_DATE_LANGUAGE à FRENCH avant d'exécuter l'interrogation.)

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

Exemple 7-4 : NLS_DATE_FORMAT remplace NLS_TERRITORY

  1. Notez les valeurs courantes de NLS_TERRITORY et NLS_DATE_FORMAT.

  2. Si la valeur de NLS_TERRITORY à 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 interrogation (à partir de l'exemple précédent, étape 3) :

     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ésultat :

     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églez NLS_TERRITORY et NLS_DATE_FORMAT aux valeurs qu'ils avaient à l'étape 1.

Voir aussi :

À propos du paramètre NLS_DATE_LANGUAGE

Ce paramètre spécifie la langue pour les noms et les abréviations de jours et de 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 pour les équivalents de langue par défaut AM, PM, AD et BC.

Précise : Langue des noms et des abréviations de jours et de mois produits par :

Valeurs acceptables : Tout nom de langue pris en charge par Oracle. Pour obtenir une liste, voir Guide de prise en charge de la globalisation pour Oracle Database.

Valeur par défaut : Définie par NLS_LANGUAGE, décrite dans "À propos du paramètre NLS_LANGUAGE".

Exemple 7-5 montre comment le réglage de NLS_DATE_LANGUAGE à FRENCH et SWEDISH affecte la date système affichée.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Exemple 7-5 : NLS_DATE_LANGUAGE affecte SYSDATE affiché

  1. Notez la valeur courante 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écuter cette interrogation :

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

    Résultat :

     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 l'interrogation à l'étape 3.

    Résultat :

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

Voir aussi :

À 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.

Spécifier : Format de date par défaut pour :

Valeurs acceptables : Tout modèle de format date-heure valide. Par 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, voir Informations de référence sur le langage SQL pour Oracle Database.

Valeur par défaut : Définie par NLS_TERRITORY, décrite dans "À propos du paramètre NLS_TERRITORY".

Voir aussi :

À propos du paramètre NLS_CALENDAR

Ce paramètre spécifie le système de calendrier pour la base de données.

Précise : Système de calendrier pour la base de données.

Valeurs acceptables : Tout système de calendrier pris en charge par Oracle. Pour obtenir une liste, voir Guide de prise en charge de la globalisation pour Oracle Database.

Valeur par défaut : Gregorian

Exemple 7-6 montre comment le réglage de NLS_CALENDAR à 'English Hijrah' et Gregorian affecte la date système affichée.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Exemple 7-6 : NLS_CALENDAR affecte SYSDATE affiché

  1. Notez la valeur actuelle 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 l'interrogation suivante :

     SELECT SYSDATE FROM DUAL;
    

    Résultat :

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

     ALTER SESSION SET NLS_CALENDAR='Gregorian';
    
  5. Exécutez l'interrogation suivante :

     SELECT SYSDATE FROM DUAL;
    

    Résultat :

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

Voir aussi :

À propos du paramètre NLS_NUMERIC_CHARACTERS

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

Spécifie : Caractère décimal (qui sépare le nombre entier et les parties décimales d'un nombre) et séparateur de groupe (qui sépare les groupes entiers pour afficher des milliers et des millions, par exemple). Le séparateur de groupe est le caractère renvoyé par l'élément de format numérique G.

Valeurs acceptables : Deux caractères d'un octet différents, sauf :

Valeur par défaut : Définie par NLS_TERRITORY, décrite dans "À propos du paramètre NLS_TERRITORY".

Dans une instruction SQL, vous pouvez représenter un nombre comme suit :

Exemple 7-7 montre comment deux paramètres NLS_NUMERIC_CHARACTERS différents affectent le résultat affiché de la même interrogation.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Exemple 7-7 : NLS_NUMERIC_CHARACTERS affecte le séparateur de caractères décimaux et de groupes

  1. Notez la valeur courante de NLS_NUMERIC_CHARACTERS.
  2. Si la valeur de NLS_NUMERIC_CHARACTERS à l'étape 1 n'est pas ",." (le caractère décimal est une virgule et le séparateur de groupe est un point), utilisez la commande suivante pour la modifier :

     ALTER SESSION SET NLS_NUMERIC_CHARACTERS=",.";
    
  3. Exécutez l'interrogation suivante :

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

    Résultat :

     Number
    
     ---------
     4.000,00
    
  4. Remplacez la valeur de NLS_NUMERIC_CHARACTERS par ",." (le caractère décimal est un point et le séparateur de groupe est une virgule) :

     ALTER SESSION SET NLS_NUMERIC_CHARACTERS=".,";
    
  5. Exécutez l'interrogation suivante :

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

    Résultat :

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

Voir aussi :

À propos du paramètre NLS_CURRENCY

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

Précise : Symbole de devise locale (chaîne de caractères retournée par l'élément de format numérique L).

Valeurs acceptables : Toute chaîne de symbole de devise valide.

Valeur par défaut : Définie par NLS_TERRITORY, décrite dans "À propos du paramètre NLS_TERRITORY".

Exemple 7-8 modifie la valeur de NLS_CURRENCY, remplaçant la valeur par défaut définie par NLS_TERRITORY. Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Exemple 7-8 : NLS_CURRENCY remplace NLS_TERRITORY

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

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. Exécuter cette interrogation :

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

    Résultat :

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

     ALTER SESSION SET NLS_CURRENCY='©';
    
  5. Exécuter cette interrogation :

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

    Résultat :

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

Voir aussi :

À propos du paramètre NLS_ISO_CURRENCY

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

Spécifie : Symbole de devise ISO (chaîne de caractères retournée par l'élément de format numérique C).

Valeurs acceptables : Toute chaîne de symbole de devise valide.

Valeur par défaut : Définie par NLS_TERRITORY, décrite dans "À propos du paramètre NLS_TERRITORY".

Les symboles de devise locale peuvent être ambigus, mais les symboles de devise ISO sont uniques. Exemple 7-9 montre que les territoires AUSTRALIA et AMERICA ont le même symbole de devise locale, mais des symboles de devise ISO différents.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Exemple 7-9 : NLS_ISO_CURRENCY

  1. Notez les valeurs courantes de NLS_TERRITORY et 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 l'interrogation suivante :

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

    Résultat :

     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 l'interrogation suivante :

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

    Résultat :

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

Voir aussi :

À propos du paramètre NLS_DUAL_CURRENCY

Ce paramètre spécifie le symbole de double devise (introduit pour prendre en charge le symbole de la monnaie euro pendant la période de transition de l'euro).

Précise : Symbole de devise double (introduit pour prendre en charge le symbole de devise euro pendant la période de transition de l'euro).

Valeurs acceptables : Toute chaîne de symbole de devise valide.

Valeur par défaut : Définie par NLS_TERRITORY, décrite dans "À propos du paramètre NLS_TERRITORY".

Voir aussi :

À propos du paramètre NLS_SORT

Ce paramètre spécifie l'ordre de tri linguistique (séquence de regroupement) pour les interrogations ayant la clause ORDER BY.

Précise : Ordre de tri linguistique (séquence de regroupement) pour les interrogations qui ont la clause ORDER BY.

Valeurs acceptables :

Valeur par défaut : Définie par NLS_LANGUAGE, décrite dans "À propos du paramètre NLS_LANGUAGE".

Exemple 7-10 montre comment deux paramètres NLS_SORT différents affectent le résultat affiché de la même interrogation. Les paramètres sont BINARY et l'espagnol traditionnel (SPANISH_M). L'espagnol traditionnel traite ch, ll et ñ comme des lettres qui suivent c, l et n, respectivement.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Tris non sensibles à la casse et non sensibles à l'accent

Les opérations dans Oracle Database sont sensibles à la casse et aux accents des caractères. Pour effectuer un tri non sensible à la casse, ajoutez _CI à la valeur du paramètre NLS_SORT (par exemple, BINARY_CI ou GERMAN_CI). Pour effectuer un tri non sensible à la casse et non sensible à l'accentuation, 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 un tableau pour les mots espagnols :

     CREATE TABLE temp (name VARCHAR2(15));
    
  2. Remplissez la table avec quelques mots en espagnol :

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

     ALTER SESSION SET NLS_SORT=BINARY;
    
  5. Exécutez l'interrogation suivante :

     SELECT * FROM temp ORDER BY name;
    

    Résultat :

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

     ALTER SESSION SET NLS_SORT=SPANISH_M;
    
  7. Répétez l'interrogation à l'étape 5.

    Résultat :

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

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

Voir aussi :

À propos du paramètre NLS_COMP

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

Spécifie : Comportement de comparaison de caractères des opérations SQL.

Valeurs acceptables :

Valeur par défaut : BINARY

Exemple 7-11 montre que le résultat d'une interrogation peut dépendre du paramètre NLS_COMP.

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Exemple 7-11 : NLS_COMP affecte la comparaison de caractères SQL

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

     ALTER SESSION SET NLS_SORT=SPANISH_M NLS_COMP=BINARY;
    
  3. Exécutez l'interrogation suivante :

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

    Résultat :

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

     ALTER SESSION SET NLS_COMP=LINGUISTIC;
    
  5. Répétez l'interrogation à l'étape 3.

    Résultat :

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

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

  6. Réglez NLS_SORT et NLS_COMP aux valeurs qu'ils avaient à l'étape 1.

Voir aussi :

À propos du paramètre NLS_LENGTH_SEMANTICS

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

Précise : Sémantique de longueur pour les colonnes des types de données de caractère CHAR, VARCHAR2 et LONG; c'est-à-dire si ces colonnes sont spécifiées en octets ou en caractères. (S'applique uniquement aux colonnes déclarées après la définition du paramètre.)

Valeurs acceptables :

Valeur par défaut : BYTE

Pour essayer cet exemple dans SQL Developer, entrez les instructions et les interrogations dans la feuille de calcul. Pour plus d'informations sur la feuille de calcul, voir "Exécution d'interrogations dans SQL Developer". Les résultats présentés ici proviennent de SQL*Plus. Leur format est légèrement différent dans SQL Developer.

Exemple 7-12 : NLS_LENGTH_SEMANTICS affecte le stockage de la colonne VARCHAR2

  1. Notez les valeurs courantes 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.

    À droite du cadre Connexions, le volet Colonnes indique que pour le nom de colonne SOME_DATA, le type de données est VARCHAR2(20 BYTE).

  8. Remplacez la valeur de NLS_LENGTH_SEMANTICS par 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 comprend désormais SEMANTICS_CHAR.

  11. Sélectionnez SEMANTICS_CHAR.

    Le volet Colonnes indique que pour le nom de colonne SOME_DATA, le type de données est VARCHAR2(20 CHAR).

  12. Sélectionnez à nouveau SEMANTICS_BYTE.

    Le volet Colonnes montre que pour le nom de colonne SOME_DATA, le type de données est toujours VARCHAR2(20 BYTE).

  13. Réglez la valeur de NLS_LENGTH_SEMANTICS à la valeur qu'elle avait à l'étape 1.

Voir aussi :