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 PHP Discussion :

Nettoyage SQL regexp


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 22
    Points
    22
    Par défaut Nettoyage SQL regexp
    Bonjour,

    Je viens de passer un temps assez conséquent en voulant utiliser un regexp pour m'aider à nettoyer une requête SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
    *
    FROM
    `tralala`
    WHERE
    `toto`  = 'bam bi  nou'   AND `tata` =  truc
    Comme vous l'aurez constaté, il y a des espaces en trop.
    Oui mais attention, ceux de la chaine "bam_bi__nou", ne doivent pas être traités. Consistance oblige.

    Donc la règle est : remplacer tout les espaces de plus de 2 caractères consécutifs par un seul à l'exception de ceux se situant entre quotes.

    Si il y a des ténors du REGEXP, merci d'avance pour votre regard affuté. Sinon, je m'en retournerais vers une bonne vieille itération des familles.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Si j'étais toi, je ne m'embêterais pas avec ça. Si tes requêtes fonctionnent comme ça, laisses donc le serveur de base de données nettoyer tout ça à ta place. Dans tous les cas, tu ne verras absolument aucune différence de performance dans le traitement de tes requêtes avec trop d'espaces.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Ahhh, j'adore, dis moi ce que tu veux faire je te dirais comment t'en passer.

    Tu as parfaitement raison, le mieux est l'ennemie du bien.
    Cela dit j'aurais quand même aimé le faire en regexp.
    Maintenant, cela n'est peut être pas possible.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bah écoute, c'est tout à fait possible par contre cela relève d'un vrai casse-tête. Tiens, quand tu feras ton regex n'oublies pas de gérer ces cas de figure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    " ' test   '    'bam bi  nou'"
    'bam "bi "  nou'
    AS ' nu''mero\' "special"   bi  '...
    Bref, ça va devenir vite l'enfer vu que tu ne peux jamais être certain des données que tu auras en face.
    Cela me penser à une situation équivalente vécue il y a déjà un certain temps : j'ai croisé un jour un développeur qui s'était mis en tête d'écrire un parser SQL en PHP. Bon, je pense que le gars y est encore dessus .
    Pas vraiment utile, très complexe à concevoir et c'est sans compter les performances catastrophiques qu'un tel outil devrait avoir.
    C'est juste pour te dire qu'il y a des choses qui ne méritent pas qu'on s'y attarde, y a déjà suffisamment à faire avec tout le reste du PHP...

Discussions similaires

  1. Nettoyage journalier d'une base MS Sql
    Par anisb dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/01/2010, 09h23
  2. Nettoyage automatique de table SQL
    Par nicocomumumu dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 31/03/2009, 00h16
  3. Expression régulière (REGEXP) en SQL
    Par yanice dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/01/2009, 17h29
  4. [regexp] dans une requete sql cers access
    Par Ludosjob dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/01/2007, 23h47
  5. [RegEx] regexp sur requete SQL
    Par wamania dans le forum Langage
    Réponses: 4
    Dernier message: 11/07/2006, 15h40

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