Bonjour,

Je cherche comment trouver un "@" dans tous les champs d'une table mais je ne sais pas comment faire.
Est-ce qu'il existe une méthode pour trouver un caractère, une expression ou n'importe dans tous les champs d'une table?
ça va beaucoup m'aider car c'est un problème que je rencontre souvent et que je ne trouve pas la solution.
merci d'avance

6 réponses


Bonsoir.
As-tu pensé à l'opérateur LIKE ?
SQL.sh » SQL LIKE.

Je n'ai pas de solution mais certains utilisent un dump de la base , d'autres utilisent information_schema pour connaitre tous les champs à scanner
plus d'infos sur ce liens

Sinon comme il est indiqué dans le liens StackOverflow, avec phpMyAdmin on peut faire une recherche globale via l'onglet 'Rechercher'
ça fonctionne bien et en plus il affiche SQL de la requête (c'est chaud!!!)

chaud ???
ha bon :D
moi, j'trouve ça plutôt simple :D

    <?php   
    try {
        $host = "127.0.0.1";
        $database="prostand_profil";
        $userdb = "************";
        $passworddb = '********************';
        $connexion = new PDO('mysql:host='.$host.';dbname='.$database, $userdb, $passworddb);
        // Toute erreur PDO envoie une exception (ce qui n'est pas, a tort,
        // le mode par defaut)
        $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $connexion->query("SET NAMES utf8;");
    }catch(Exception $exc){
        echo "Erreur sur base de données migration -> $exc";
        exit();
    }
    // recherche des champs string dans la table
    // on peu aussi prendre le text tinytext ou autre type string
    $rowst = $connexion
                ->query("show columns from clients_prospects where Type like 'var%' or Type like 'char%'")
                ->fetchAll(PDO::FETCH_ASSOC);
    $like = 'WHERE ';
    for ($i=0; $i<count($rowst);$i++) { 
        $like .= $rowst[$i]['Field'] . " LIKE '%@%' OR ";   
    }
    $like = substr($like,0, -3) ;
    echo $like ;
    // donne sur ma table
    //WHERE ini_com LIKE '%@%' OR raison_sociale LIKE '%@%' OR xgroupe LIKE '%@%' OR adresse LIKE '%@%' 
    OR complement_adresse LIKE '%@%' OR adresse_autre LIKE '%@%' OR code_postal LIKE '%@%' OR ville LIKE '%@%' 
    OR pays LIKE '%@%' OR telephone LIKE '%@%' OR fax LIKE '%@%' OR email LIKE '%@%' OR code_comptable LIKE '%@%' 
    OR str_secteur_activite LIKE '%@%' OR commentaire LIKE '%@%' OR siren LIKE '%@%' OR tmontant_garanti LIKE '%@%'
    OR tpayement LIKE '%@%' OR observation LIKE '%@%' OR stractivite LIKE '%@%' OR qualification LIKE '%@%' 
    OR reglement_specifique LIKE '%@%' 

voilà, tu transforme ça en function ou class et ça marche tout seul ;)

@pluche

Pierre

shiko
Auteur

Euh moi je cherche juste une méthode en SQL ^^'

merci

salut,
bah, tu as l'algo ;)
juste un curseur sur la requète ;)

@plus
Pierre