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

Requêtes MySQL Discussion :

Problème de caractères spéciaux dans un select [MySQL-5.5]


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut Problème de caractères spéciaux dans un select
    Bonjour le forum,

    Je m'excuse d'avance si ma question redonde, mais j'avoue avec le cerveau vaporeux à rechercher une solution.

    Je dispose d'une table dont certains enregistrement ont des caractères spéciaux, un "à"
    J'ai évidemment comme problème que d'autres enregistrements s'appellent pareil, mais avec un "A".

    Lorsque j'effectue un bête select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select id_jobs, pcl
    from jobs2
    where
        pcl = 'ZAC0J1' or
        pcl = 'ZAC2J1';
    j'obtiens 10 lignes de résultats au lieu de 5 :
    id_jobs pcl
    7792 ZAC0J1
    7793 ZàC0J1
    7794 ZAC0J2
    7795 ZàC0J2

    J'ai testé diverses choses, mais je n'arrive pas à un select qui soit plus strict que cela sans passer par de l'hexa (que je trouve assez barbare) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select PCL, HEX(pcl) from jobs2 where pcl = 'ZAC0J1' or pcl = 'ZàC0J1';
    PCL HEX(pcl)
    ZAC0J1 5A4143304A31
    ZàC0J1 5AC3A043304A31

    Voici le create de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE `jobs2` (
      `ID_JOBS` int(11) NOT NULL AUTO_INCREMENT,
      `PCL` CHAR(8) NOT NULL,
      `APPLI` CHAR(4) NOT NULL,
      `ESCALADE` CHAR(150) NOT NULL,
      `LIBELLE_JOB` CHAR(255) NOT NULL,
      `CODE_PLANIF` CHAR(50) NOT NULL,
      `GROUPE_TWS` CHAR(8) NOT NULL,
      KEY `ID_JOBS` (`ID_JOBS`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8 COLLATE utf8_unicode_ci
    ;
    Et comment je l'ai remplie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into jobs2 (select * from jobs)
    Petites infos :
    Cette base me sert notamment à faire des requêtes sur d'autres base avec des jointures à gauche, à cause de cela, je me retrouve avec des résultats complètement délirants (de 37439 ligne dans ma base je passe à 156000 avec ma requête à jointure)
    Cette table n'a pas de clé primaire (c'est pas ma faute, elle a été récupérée comme ça) et du coup j'aimerai bien la refaire avec une vrai clé et qu'elle ressemble à une base exploitable

    J'aimerai bien de l'aide, parce que j'avoue ne pas être expert mais être pommé, pour que ma première requête ne renvoie bien que les 2 lignes correspondante.
    J'utilise MySQL Workbench 5.2.47 CE rev 10398 pour interagir avec ma base MySQL 5.5.10-log

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour

    Vous avez un problème aves les jeux de caractères et les collations.
    Certains vous diront que Mysql est très mauvais au niveau de la gestion des jeux de caractères et des collations.
    C'est un domaine que je ne connait pas trop, donc je ne me prononcerai pas.

    Je vous suggère de lire le tutoriel Les jeux de caractères et collations .

    Bonne journée
    Pierre

  3. #3
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Merci, c'est très intéressant comme document.

    Mon create utilise désormais cette collation, qui permet de gérer les caractères spéciaux et accentués (€, @, à, é, è, etc.) et d'être sensible à la casse :
    En recherchant, je suis tombé sur une façon assez élégante de s'affranchir de la configuration du serveur en rajoutant une clause collate dans la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM dttp11expl05j.jobs where pcl = 'ZAC0J1' collate utf8_bin;
    Le serveur me renvoie uniquement ZAC0J1 et plus le ZàC0J1.

    Je n'utilise pas l'utf8_bin dans le create car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show variables like 'char%';
    me montre que mon client 'MySQL Workbench) travaille en UTF8 mais pas le serveur, du coup c'est sans effet, sauf si je place cette clause collate.

    Je continue de lire le doc qui est très bien fait.

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

Discussions similaires

  1. Caractères spéciaux dans les select
    Par KDZCrew dans le forum Zend_Form
    Réponses: 2
    Dernier message: 11/04/2011, 13h51
  2. Problème de caractères spéciaux dans le web.config
    Par Oberown dans le forum ASP.NET
    Réponses: 0
    Dernier message: 24/02/2011, 11h26
  3. Réponses: 2
    Dernier message: 04/01/2010, 17h02
  4. problème de caractères spéciaux dans formulaire
    Par jules_29 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/12/2007, 10h15
  5. [HTML] [I.E.] Affichage de caractères spéciaux dans un select
    Par madtroll dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 18/05/2007, 17h50

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