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

Langage SQL Discussion :

Replace sur une table entière ?


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Replace sur une table entière ?
    Bonjour,

    Désolé d'avance si la question a déjà été posée mais je n'ai pas trouvé de réponse.

    Je dois remplacer tous les caractères spéciaux de ma table par des caractères "normaux".

    Ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE membres SET nom = REPLACE(nom,"à","a");
    fonctionne bien pour remplacer les "à" par des "a" dans mon champs "nom".
    Cependant,

    1)Comment faire pour faire cette requête sur la table entière et pas juste sur un champs?

    2) Comment faire pour étirer cette requête aux autres caractères, à savoir remplacer les à par les a, les ï par les i, les é par les e, etc. ? Une requête du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE membres SET tousleschamps= REPLACE(tousleschamps,"à","a")(nom,"ï","i")(nom,"é","e");
    mais je ne trouve pas la bonne syntaxe.

    3) Existe-t-il un moyen autre que de taper tous les caractères spéciaux (une fonction, une liste déjà faite).



    Merci pour votre lecture et votre aide .

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Quel est votre SGBD ?

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai oublié de dire le principal .
    C'est sur Mysql.
    (J'ai hésité à poster dans SQL ou PHP/MySQL...)

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Peut-être en changeant tout le character set de la base...
    Par contre, pourquoi vouloir vous débarrasser des caractères spéciaux ?

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Demande d'un client...

    Il n'y a pas moyen de faire ce que je demande, ni pour le 1), ni pour le 2) ?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Je n'ai pas de MySQL sous la main, donc difficile de tester.
    Peut-être quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE membres MODIFY nom VARCHAR(50) CHARACTER SET ascii;
    À passer pour toutes les colonnes VARCHAR de la table.
    Avec un peu de change il n'y aura pas d'accent dans le character set ascii et MySQL saura faire les conversions.

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Malheureusement, il n'arrive pas à faire les conversions :
    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
    30
    31
    32
    33
    34
    35
    mysql> create table membre (nom varchar(50));
    Query OK, 0 rows affected (1.58 sec)
     
    mysql> insert into membre values ('étàïoùêtè');
    Query OK, 1 row affected (0.06 sec)
     
    mysql> select * from membre;
    +-----------+
    | nom       |
    +-----------+
    | étàïoùêtè |
    +-----------+
    1 row in set (0.03 sec)
     
    mysql> ALTER TABLE membre MODIFY nom VARCHAR(50) CHARACTER SET ascii;
    Query OK, 1 row affected, 1 warning (0.39 sec)
    Records: 1  Duplicates: 0  Warnings: 1
     
    mysql> show warnings;
    +---------+------+---------------------------------------------------------------------------+
    | Level   | Code | Message                                                                   |
    +---------+------+---------------------------------------------------------------------------+
    | Warning | 1366 | Incorrect string value: '\xE9t\xE0\xEFo\xF9...' for column 'nom' at row 1 |
    +---------+------+---------------------------------------------------------------------------+
    1 row in set (0.00 sec)
     
    mysql> select * from membre;
    +-----------+
    | nom       |
    +-----------+
    | ?t??o??t? |
    +-----------+
    1 row in set (0.00 sec)
     
    mysql>
    Je pense qu'il faut faire tous les REPLACE identifiés, et s'aider de la table INFORMATION_SCHEMA.COLUMNS pour générer les requêtes à passer sur les colonnes VARCHAR.

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Etant un petit peu novice je ne vous cache pas que je suis un peu paumé là ... ^^

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 978
    Points
    52 978
    Billets dans le blog
    6
    Par défaut
    Il est parfaitement stupide de vouloir perdre de l'information. Il existe des moyens de contourner les recherches sensible au accents par le biais des collation, sans dégrader l'info !

    mais hélas, MySQL gère très mal les collations. A me lire : http://blog.developpez.com/sqlpro/p1..._grand_folklor

    A +

Discussions similaires

  1. [JTable] Raccourci clavier sur une Table
    Par sylvain_2020 dans le forum Composants
    Réponses: 5
    Dernier message: 05/07/2007, 09h01
  2. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16
  3. Pooling sur une table SQL
    Par Jean-Jacques Engels dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/11/2004, 23h10
  4. Recordcount sur une table filtrée
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/03/2004, 00h05
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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