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 :

Problème d'apostrophe sur une sélection


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut Problème d'apostrophe sur une sélection
    Bonjour,
    Je cherche à retourner tous les clients qui se trouvent dans une ville donnée, j'ai donc grosso-modo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select * from clients
    where clVille LIKE 'maVilleCherchée%'
    Pas de probleme si ce n'est quand je demande pour une ville avec apostrophe (ex: faye d'anjou, l'hay les roses...), là ben, il trouve rien...
    Je cherche donc un moyen de contourner ce probleme en ignorant l'apostophe mais sans resultat(translate de ' en rien). Donc si quelqu'un avait une idée car je supppose que c'est un problème récurrent.

    D'avance merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Par défaut
    Bonjour,

    Tu peux essayer avec la valeur en hexa de ton caractère apostrophe de la manière suivante :

    SELECT * FROM clients WHERE clVille LIKE '%'!!X'valeur en hexa de l apostrophe'!!'%'

    Alex.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Citation Envoyé par alex.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM  clients
    WHERE clVille LIKE '%'!!X'valeur en hexa de l apostrophe'!!'%'
    Merci de ta réponse mais elle plus qu'obscure pour moi! (je débute).
    Bon la valeur hexa de la simple quote est 27, jusque là, ça va.
    Mais ensuite, pourquoi les % se retrouvent entre quotes?
    Qu'est ce que les !! ?
    X signifie t'il qu'on précise une valeur hexa?
    Et la valeur "maVilleRecherchée" à laquelle je veux comparer mon champs où est ce que je la précise?
    (En clair j'ai rien compris )

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Par défaut
    Bonjour,

    !! = concaténation de 2 chaines de caractères : 'A' !! 'B' = 'AB'
    le % est le cacractère de recherche générique
    LIKE '%'!!X'valeur en hexa de l apostrophe'!!'%' équivaut les chaînes de caractères contenant l'apostrophe par exemple ABC'DE ou 'ABC ou ABC'
    X veut bien dire que c'est en hexa.

    En admettant que tu recherches les villes avec "L' ....", ta requête ressemblera à ça :

    SELECT * FROM clients
    WHERE clVille LIKE 'L'!!x'27'!!'%'

    Si tu cherches l'hay les roses :
    SELECT * FROM clients
    WHERE clVille LIKE 'L'!!x'27'!!'hay les roses%'

    Par contre, je te conseille de vérifier le cadrage de tes noms de villes,
    "l'hay les roses" étant différent de "l ' hay les roses ". Il faudra faire ( à tester ), clVille LIKE 'L%'!!x'27'!!'%hay les roses%' en espérant que tu n'es pas une ville qui s'appelle l'ahay les roses. Il est aussi possible qu'un programme fasse déjà le bon formatage avant d'introduire les données dans DB2. Si tu ne le connais pas, renseignes-toi cela te permettra de connaître les cas et pièges à prendre en compte.

    Alex.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Par défaut
    Bonjour,

    !! = concaténation de 2 chaines de caractères : 'A' !! 'B' = 'AB'
    le % est le cacractère de recherche générique
    LIKE '%'!!X'valeur en hexa de l apostrophe'!!'%' équivaut les chaînes de caractères contenant l'apostrophe par exemple ABC'DE ou 'ABC ou ABC'
    X veut bien dire que c'est en hexa.

    En admettant que tu recherches les villes avec "L' ....", ta requête ressemblera à ça :

    SELECT * FROM clients
    WHERE clVille LIKE 'L'!!x'27'!!'%'

    Si tu cherches l'hay les roses :
    SELECT * FROM clients
    WHERE clVille LIKE 'L'!!x'27'!!'hay les roses%'

    Par contre, je te conseille de vérifier le cadrage de tes noms de villes,
    "l'hay les roses" étant différent de "l ' hay les roses ". Il faudra faire ( à tester ), clVille LIKE 'L%'!!x'27'!!'%hay les roses%' en espérant que tu n'es pas une ville qui s'appelle l'ahay les roses. Il est aussi possible qu'un programme fasse déjà le bon formatage avant d'introduire les données dans DB2. Si tu ne le connais pas, renseignes-toi cela te permettra de connaître les cas et pièges à prendre en compte.

    Alex.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Citation Envoyé par alex.
    LIKE '%'!!X'valeur en hexa de l apostrophe'!!'%' équivaut les chaînes de caractères contenant l'apostrophe par exemple ABC'DE ou 'ABC ou ABC'
    X veut bien dire que c'est en hexa.
    Donc je recherche les villes ayant une apostrophe.

    Citation Envoyé par alex.
    En admettant que tu recherches les villes avec "L' ....", ta requête ressemblera à ça :

    SELECT * FROM clients
    WHERE clVille LIKE 'L'!!x'27'!!'%'

    Si tu cherches l'hay les roses :
    SELECT * FROM clients
    WHERE clVille LIKE 'L'!!x'27'!!'hay les roses%'
    Donc il faut que je construise à la mano ma requête pour remplacer dans ma ville recherchée l'apostrophe par x'27'?
    (J'ai pas testé, c'est juste de la théorie car j'ai copié un bout de code existant qui fonctionne bien, même si je sais pas pourquoi, puisqu'il sert juste à ajouter % enfin de variable)

    Citation Envoyé par alex.
    Par contre, je te conseille de vérifier le cadrage de tes noms de villes,
    "l'hay les roses" étant différent de "l ' hay les roses ".
    Tout à fait, c'est pas pris en compte mais ce n'est pas gênant. Je vais quand même appronfondir la question.

    Merci de ton aide.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Par défaut
    Que tout cela est bien compliqué

    select * from testal1 where al1_char like 'L ''%';
    ------------------------------------------------------------------------------
    Results for a single query are displayed on the Query Results tab.
    1 row(s) returned successfully.

    Il suffit de doubler la quote qui se trouve dans le nom à retrouver

    select * from testal1 where al1_char like '__''%';
    ------------------------------------------------------------------------------
    Results for a single query are displayed on the Query Results tab.
    1 row(s) returned successfully.


    Dans cet exemple; la quote est en troisième position, le deux premières peuvent être n'importe quoi, de même à partir de la quatrième position.

    select * from testal1 where al1_char like '%''%';
    ------------------------------------------------------------------------------
    Results for a single query are displayed on the Query Results tab.
    1 row(s) returned successfully.

    Ici la quote peux être n'importe où.

    Doubler la quote est aussi valable pour INSERT et UPDATE.

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

Discussions similaires

  1. [XL-2003] Problème sur une sélection puis séparation par une ligne blanche
    Par korni184 dans le forum Excel
    Réponses: 12
    Dernier message: 08/04/2010, 11h45
  2. Réponses: 4
    Dernier message: 16/06/2005, 15h37
  3. Problème de select sur une date (DATETIME....)
    Par zeldoi5 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/05/2005, 11h19
  4. probléme de cadre sur une image qui me sert de lien
    Par thomas_chamas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/11/2004, 17h36
  5. Problème de chaine sur une page HTML
    Par Kerod dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2004, 16h23

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