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 :

[9iR2] Requête sur des libellés ''Äçàè"


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
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut [9iR2] Requête sur des libellés ''Äçàè"
    Bonjour

    J'ai besoins d’implémenter une fonction de recherche sur des libellés en JAVA connecté à une base Oracle 9.2

    Le problème est que ces libellés en base sont susceptible de contenir des caractères majuscule comme minuscule accentué ou non et avec des cédilles "éçàÂÎÇ"

    Il y aurait bien la fonction SOUNDEX mais il faudrait pouvoir l'utiliser avec un like '%%'

    Vous auriez une solution à par le translate ?

    - nlssort incompatible
    - CONVERT incompatible


    EDIT : CONVERT FONCTIONNE TRÈS BIEN

    Merci

  2. #2
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Bonjour,


    D'après ce que j'ai trouvé dans la documentation oracle 9i (R2), la fonction TRANSLATE est disponible pour la version d'oracle que vous utilisez.

    http://docs.oracle.com/cd/B10501_01/...htm#SQLRF06145

    ainsi que la fonction REPLACE.

    http://docs.oracle.com/cd/B10501_01/...htm#SQLRF00697

    Oui, on peut se débarasser des accents si et seulement si on part sur le principe que les accents n'ont pas d'impact sur la recherche (en gros les caractères tels qu'ils sont présentés dans la table ASCII)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TRANSLATE(REPLACE('ici vous écrivez donc votre texte', 'Œœ', 'oeoe'),'ÀÂÄÈÉÊËÎÏÔÙÛÜYÇàâäèéêëîïôùûüÿç',
    'AAAEEEEIIOUUUYCaaaeeeeiiouuuyc')
    Attention, il faut avoir configuré au préalable le paramètre NLS_LANGUAGE de votre session oracle, sinon on risque d'avoir des résultats bizzars.


    Cordialement,

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Merci de votre réponse,

    Le translate fonctionne bien 9.2 quand on ne fait pas appelle à une colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select TRANSLATE(UPPER('%behç%'), 'ÉÈÊËÀÄÂÎÏÔÖÛÜÇ', 'EEEEAAAIIOOUUC') from dual;
    Mais dans ce cas là ça ne passe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM table
    WHERE TRANSLATE(UPPER(colonne),'ÁÀÂÄÃÇÉÈÊËÍÌÏÎÑÒÓÔÖÕØÚÙÛÜÝŸ', 'AAAAACEEEEIIIINOOOOOOUUUUYY') like TRANSLATE(UPPER('%behç%'), 'ÁÀÂÄÃÇÉÈÊËÍÌÏÎÑÒÓÔÖÕØÚÙÛÜÝŸ', 'AAAAACEEEEIIIINOOOOOOUUUUYY');
    En 10 ça passe sans problème

  4. #4
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Donc vous dites si vous écrivez le nom de la colonne au lieu d'une chaîne de caractère explicite ça ne passe pas sur oracle 9i. Je ne peux pas vérifier car je suis sur 11gR2.

    Dans le lien de la documentation TRANSLATE que je vous ai donné on peut lire:
    ...
    This function does not support CLOB data directly. However, CLOBs can be passed in as arguments through implicit data conversion.
    ...
    Quel est le type de la colonne?

  5. #5
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Quel est exactement le message d'erreur que vous avez sous oracle 9i?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Désolé j'ai fais une erreur dans le nom de la table... qui existe effectivement sur ma base en version 10 ...

    Le translate fonctionne très bien en 9.2

    Ça aussi ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select UPPER (CONVERT (libelle, 'US7ASCII')) from ma_table;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mysql requête sur des dates
    Par lampre dans le forum Requêtes
    Réponses: 10
    Dernier message: 19/12/2006, 11h50
  2. requête sur des chaînes de caractères
    Par Mlude dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/08/2006, 20h52
  3. [Conception] Requête sur des dates pour stats
    Par vallica dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/05/2006, 10h15
  4. [MySQL] Problème de requête sur des dates
    Par dahu29 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2006, 13h08
  5. requêtes sur des champs date
    Par wiwi dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 03/02/2006, 14h14

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