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 :

Convertir les caractères accentués en caractères non accentués


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 53
    Points
    53
    Par défaut Convertir les caractères accentués en caractères non accentués
    Bonjour a tous,

    je cherche un moyen de remplacer les caractères
    accentuer avec des caractères non accentuer

    en pure sql,

    si quelqu'un connait une solution, merci

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    je ne sais pas si c'est possible à part en remplaçant caractère par caractère

  3. #3
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Citation Envoyé par ali-el Voir le message
    je cherche un moyen de remplacer les caractères
    accentués par des caractères non accentués

    en pur sql
    Je ne vois pas comment sauf à emboîter des REPLACE genre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SET colonne = REPLACE(REPLACE(REPLACE(colonne, 'é','é'),'è','e'),'ê','e')

  4. #4
    ced
    ced est actuellement connecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Je vous recommande d'aller jeter un œil dans l'excellent tutoriel d'Antoun : http://antoun.developpez.com/mysql5/jeux-collations/.
    En convertissant en UTF8 (voir page 9), ça devrait passer...

    ced

    [EDIT] : ça dépend quand même du jeu de caractère utilisé au départ...

  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 53
    Points
    53
    Par défaut
    Merci a tous pour vos réponses,

    j'ai trouvé une solution en écrivant une fonction utilisateur,

    en faite j'ai écrit la fonction translate de Oracle/PostgreSql
    qui n'existe pas sous Mysql,

    j'en est fait un billet sur mon blog dans lequel je livre la solution.

    http://inspirationgeek.com/blog/inde...ate-dans-Mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    # Modification du caractère de fin d instruction
    DELIMITER |
     
    # On fait passer le jeux de caractères sur utf8 sinon CHAR_LENGTH('â') = 2 au lieu de 1
    SET NAMES utf8;
     
    # Création de la function translate
     
    CREATE FUNCTION translate(V_string VARCHAR(255), V_from VARCHAR(255), V_to VARCHAR(255))
    RETURNS VARCHAR(255) DETERMINISTIC
    BEGIN
     
    DECLARE i INT;
    SET i = CHAR_LENGTH(V_from);
     
    WHILE i > 0 DO
     SET V_string = REPLACE(V_string, SUBSTR(V_from, i, 1), SUBSTR(V_to, i, 1));
     SET i = i - 1;
    END WHILE;
     
    RETURN V_string;
     
    END;
    |
     
    # Très important, Remise du delimiter standard
     
    DELIMITER ;
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    mysql> SELECT translate('très accentués', 'éèê', 'eee');
    +---------------------------------------------+
    | translate('très accentués', 'éèê', 'eee') |
    +---------------------------------------------+
    | tres accentues                                   |
    +---------------------------------------------+
    1 row IN SET (0.00 sec)

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

Discussions similaires

  1. [Débutant] Interpréter les caractères accentués en non accentués
    Par wofty dans le forum Visual Studio
    Réponses: 1
    Dernier message: 17/05/2012, 23h11
  2. Réponses: 5
    Dernier message: 29/05/2008, 15h23
  3. Stockage de caractères accentués et ASCII (non imprimable)
    Par psychomatt dans le forum Requêtes
    Réponses: 9
    Dernier message: 08/02/2008, 17h00
  4. Caractères non accentués suite maj SP2
    Par Telemak dans le forum Windows XP
    Réponses: 2
    Dernier message: 30/10/2006, 10h58

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