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

DB2 Discussion :

DB2 et la casse


Sujet :

DB2

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 47
    Par défaut DB2 et la casse
    Bonjour,

    Je suis nouveau dans le monde DB2, je vous demanderez donc d’être indulgent avec moi.

    Est il possible de faire une requete SQL non sensible à la casse.

    ex:

    select prenom from utilisateur where prenom = 'dorothee'

    cette requete me retournerait les valeurs "dorothee" mais également "dorothée".

    Pour info je suis sur DB2/AS400.

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,


    quel DB2 avez-vous ?

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 780
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 780
    Par défaut
    Citation Envoyé par tentos Voir le message
    Bonjour,

    Je suis nouveau dans le monde DB2, je vous demanderez donc d’être indulgent avec moi.

    Est il possible de faire une requete SQL non sensible à la casse.

    ex:

    select prenom from utilisateur where prenom = 'dorothee'

    cette requete me retournerait les valeurs "dorothee" mais également "dorothée".

    Pour info je suis sur DB2/AS400.

    Merci d'avance.
    Bonjour, cela dépasse le concept de casse car le "é" n'est absolument pas le même caractère que le "e". Sous ZOS en tout cas je n'ai jamais vu de requête gérant ce cas de figure.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 47
    Par défaut
    pour la version, je crois que c'est 9.2, mais ce n'est pas sur et personne n'a l'air de vraiment être au courant.

    Je sais uniquement que c'est sur du Iseries.

  5. #5
    Membre Expert Avatar de bernard59139
    Profil pro
    Retired
    Inscrit en
    Octobre 2006
    Messages
    966
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retired

    Informations forums :
    Inscription : Octobre 2006
    Messages : 966
    Par défaut
    Tu peux utiliser la fonction SOUNDEX pour une correspondance approximative.


    Sinon, il y a les fonctions TRANSLATE+UPPER.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 47
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    Bonjour, cela dépasse le concept de casse car le "é" n'est absolument pas le même caractère que le "e". Sous ZOS en tout cas je n'ai jamais vu de requête gérant ce cas de figure.
    Je suis d'accord avec toi en fait pour être plus précis, c'est comment faire une recherche sans tenir compte des diacritiques.

    Il ne me semble pas que la fonction UPPER fonctionne seule, je me renseigne sur le TRANSLATE. Merci pour vos réponses.

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 47
    Par défaut
    Citation Envoyé par bernard59139 Voir le message
    Tu peux utiliser la fonction SOUNDEX pour une correspondance approximative.


    Sinon, il y a les fonctions TRANSLATE+UPPER.
    Parfait voilà la solution, en espérant que cela ne dégrade pas trop les performances

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT prenom
    FROM personne
    WHERE TRANSLATE(LOWER(prenom), 'aaaaaaceeeeiiiinooooouuuuyy', 'áàâäãåçéèêëíìîïñóòôöõúùûüýÿ') = 'dorothee';
    Cette requête me remonte bien dorothée, dorothee, DOROTHÉE et DOROTHEE

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 780
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 780
    Par défaut
    Cette solution peut être très utile merci !

  9. #9
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 47
    Par défaut
    Bon le résultat fonctionne bien par contre niveau performance c'est une catastrophe .

    En même temps je m'y attendais un peu.

    J'ai fini par restreindre le translate puis inverser le translate et le upper.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT prenom
    FROM personne
    WHERE UPPER(TRANSLATE(prenom, 'EEEAUI', 'éèêàùï' )) = 'DOROTHEE';

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    En piste :

    - essayez de créer un index avec les 2 fonctions : create index ...on ... (upper(translate(ma_col))
    - explorer les soundex comme dit plus haut (voir si c'est indexable)
    - avoir une colonne en plus avec le nom nettoyé

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

Discussions similaires

  1. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  2. [CHOIX]interbase, postgreSQL ou DB2?
    Par biohazard dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 28/03/2003, 14h41
  3. [Comparatif] DB2, Oracle et SQLServer
    Par Laurent MALAVASI dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 25/10/2002, 12h26
  4. [DB2] Au sujet de...
    Par Eric Denné dans le forum DB2
    Réponses: 2
    Dernier message: 16/09/2002, 19h21
  5. Pas de casse dans les XML
    Par :GREG: dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 13h51

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