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 :

[9i, 10g] NLS_SORT=FRENCH_M_AI


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut [9i, 10g] NLS_SORT=FRENCH_M_AI
    Bonjour,

    J'ai rien trouvé qui corresponde précisemment à mon souci (même dans la discussion NLS_UPPER minuscules accentuées en majuscules).

    Voila ce que je veux faire :
    Je veux remonter toutes les lignes qui correspondent à une chaîne de caractères en m'affranchissant des caractères diacritiques et de la casse.

    J'avais pensé à faire un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER SESSION SET NLS_COMP=LINGUISTIC;
    ALTER SESSION SET NLS_SORT=FRENCH_M_AI;
    SELECT NLS_UPPER('äâöeaùé', 'NLS_SORT = FRENCH_M_AI') FROM DUAL;
    (en réalité dans un WHERE avec un comparateur LIKE)

    Mais la requête de test ci-dessus me renvoie dans SQL*Plus WorksheetJe voudrais obtenir mais je n'y arrive pas.

    Une idée serait bienvenue

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Voir éventuellement cette discussion.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    Merci beaucoup, je vais regarder ça en détail.

    Bizarrement cette discussion m'avait échappée quand j'avais fait la recherche

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    En fait, j'avais oublié de préciser une information pour ma question

    pifor, la solution que tu proposes dans l'autre fil est très bonne, c'est d'ailleurs celle que j'ai appliquée pour la plupart de mes requêtes.

    Maintenant j'aimerais faire la même chose sur un champ de type CLOB.
    D'après ce que j'ai pu comprendre, ça ne marche pas comme avec un VARCHAR par exemple.

    Donc j'envisageais de faire mes comparaison avec la fonction NLS_UPPER, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE NLS_UPPER(MON_CHAMP, 'NLS_SORT=FRENCH_M_AI')
     LIKE NLS_UPPER('%étE%', 'NLS_SORT=FRENCH_M_AI')
    Mais j'échoue jusqu'à présent

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    Bon, j'ai avancé quelque peu

    Voila ce que j'utilise pour la 10g :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * FROM v$version;
    DROP TABLE t;
    CREATE TABLE t (x clob);
    INSERT INTO t VALUES ('été');
    INSERT INTO t VALUES ('ete');
    INSERT INTO t VALUES ('ETE');
    commit;
    SELECT * FROM t WHERE nlssort(x, 'nls_sort=french_m_ai') like nlssort('été', 'nls_sort=french_m_ai');
    SELECT * FROM t WHERE nlssort(x, 'nls_sort=french_m_ai') like nlssort('ete', 'nls_sort=french_m_ai');
    et ceci pour la 9i :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * FROM v$version;
    DROP TABLE t;
    CREATE TABLE t (x clob);
    INSERT INTO t VALUES ('été');
    INSERT INTO t VALUES ('ete');
    INSERT INTO t VALUES ('ETE');
    commit;
    SELECT * FROM t WHERE nlssort(x, 'nls_sort=generic_baseletter') like nlssort('été', 'nls_sort=generic_baseletter');
    SELECT * FROM t WHERE nlssort(x, 'nls_sort=generic_baseletter') like nlssort('ete', 'nls_sort=generic_baseletter');
    Le tri french_m_ai n'existe pas en 9i donc je me suis rabattu sur le generic_baseletter.

    Soit. Ca marche pas trop mal.

    Mais je voudrais désormais pouvoir ne récupérer que les mots entiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT * FROM v$version;
    DROP TABLE t;
    CREATE TABLE t (x clob);
    INSERT INTO t VALUES ('été');
    INSERT INTO t VALUES ('ete');
    INSERT INTO t VALUES ('ETE');
    INSERT INTO t VALUES ('ETErien');
    INSERT INTO t VALUES ('rienETErien');
    INSERT INTO t VALUES ('rienETE');
    commit;
    SELECT * FROM t WHERE nlssort(x, 'nls_sort=french_m_ai') 
    like '%' || nlssort('ete', 'nls_sort=french_m_ai') ||'%';
    Et là, je n'y arrive pas.
    Toute idée serait bienvenue

Discussions similaires

  1. Installation Oracle 10g sous Windows 2000
    Par Jeff206 dans le forum Oracle
    Réponses: 6
    Dernier message: 24/08/2004, 15h51
  2. [ORACLE 10g Linux] Pbm de connexion avec un Client winXP
    Par zarbiwayne dans le forum Administration
    Réponses: 26
    Dernier message: 20/08/2004, 22h37
  3. [Jdeveloper 10g]
    Par laouedjahmed dans le forum JDeveloper
    Réponses: 1
    Dernier message: 03/08/2004, 21h50
  4. Installation 10g : grosses lenteurs
    Par P@t dans le forum Oracle
    Réponses: 4
    Dernier message: 29/06/2004, 22h57
  5. [ Oracle 9ias / 10g] problème de connexion
    Par Boosters dans le forum JDeveloper
    Réponses: 2
    Dernier message: 20/01/2004, 17h23

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