IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

UPPER et accent (oracle9i)


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 26
    Par défaut UPPER et accent (oracle9i)
    Bonjour

    Voila, j'ai un problème tout bête.

    Lorsque je fais une requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT UPPER(t.nom) FROM t
    Pour la valeur stéphane, il va me renvoyer STÉPHANE er non STEPHANE comme j'aimerais.
    Cela m'embête puisque je veux faire des recherches ne tenant pas compte de la casse.

    Y a t'il une fonction qui permet de mettre un nom en majuscule et de virer les accents?

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    autre que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SQL> select translate(upper('Stéphane'),'ÀÉÈÊËÏÎÔÖÜÛÇ','AEEEEIIOOUUC') from dual;
    TRANSLAT
    --------
    STEPHANE
    je ne vois pas

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    par contre pour faire une recherche ne dépendant pas de la casse ni des accents il y a quelque chose ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    SQL> create table t(nom varchar2(20));
     
    Table created.
     
    SQL> insert into t values ('Stéphane');
     
    1 row created.
     
    SQL> insert into t values ('CÉDRIC');
     
    1 row created.
     
    SQL> alter session set nls_comp=ansi;
     
    Session altered.
     
    SQL> alter session set nls_sort=french_ai;
     
    Session altered.
     
    SQL> select * from t where nom='cedric';
    NOM
    --------------------
    CÉDRIC
     
     
    SQL> select * from t where nom='stephane'; 
    --------------------
    Stéphane

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 26
    Par défaut
    Merci de m'aider


    Je ne connais pas bien oracle puisque je commence à travailler avec. J'avais trouvé la solution avec les alter session sur le net mais j'avais lu que c'était valable qu'à partir d'oracle 10, c'est pas le cas?

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    ça vaut bien une belle entrée de FAQ, ça !

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    sans le alter session

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select * from t where nlssort(nom,'nls_sort=FRENCH_AI') = 
    nlssort('stephane','nls_sort=FRENCH_AI');
    NOM
    --------------------
    Stéphane
    avec un index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    SQL> create index i on t(nlssort(nom,'nls_sort=FRENCH_AI'));
    Index created.
     
    SQL> select * from t where nom='stephane';
    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 1984501315
     
    ------------------------------------------------------------------------------------
    | Id  | Operation                   | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    ------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT            |      |     1 |     7 |     1   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| T    |     1 |     7 |     1   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | I    |     1 |       |     1   (0)| 00:00:01 |
    ------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       2 - access(NLSSORT("NOM",'nls_sort=''FRENCH_AI''')=HEXTORAW('696E285F3714
                  552800020202020202020200') )

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    (désolé j'avais pas vu que tu étais en 9i, donc translate...)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 26
    Par défaut
    Citation Envoyé par laurentschneider
    (désolé j'avais pas vu que tu étais en 9i, donc translate...)

    J'essayais de faire fonctionner les nlssort sans succès. Ca ne marche pas sous la version 9i?

    Sinon, notre dba m'a indiqué que ce soir, on devrait passer en 10g.2 doncje reessaierai de faire fonctionner la requête avec les nlssort.

    EN tout cas merci de ton aide.

Discussions similaires

  1. Accent sur UPPER() ?
    Par shadeoner dans le forum Oracle
    Réponses: 7
    Dernier message: 03/07/2006, 11h47
  2. [upper et les accents]
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 6
    Dernier message: 30/07/2005, 20h41
  3. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 02h59
  4. que deviennent mes accents ?!
    Par petitdns dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2002, 09h32
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo