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

  1. #1
    Nouveau membre du Club
    [SQL_LIKE] Requête LIKE avec plusieurs colonnes d'une table
    Bonjour,

    Je débute en SQL et j'aimerai exécuter une requête qui cherche un mot dans plusieurs colonnes d'une table.

    Voici ce que j'ai écris comme requête :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT * FROM articles WHERE title OR resume OR content LIKE "%$motclé%"


    Mais comme vous vous doutez cette requête ne renvoie pas toutes les lignes où se trouve le "$motclé". Alors que moi je veux que la requête me renvoie toutes les lignes qui contiennent au moins une fois le "$motclé" dans l'une des très 3 colonnes.

    Merci pour votre aide.

  2. #2
    Expert éminent
    Bonjour,
    Dans la clause WHERE attend une expression logique.
    Donc A OR B OR c=1 est vira si A est VRAI ou B est VRAI ou C = 1.
    Ce n'est pas propre à SQL, c'est juste de la logique booléenne.
    Je pense que tu devrais voir comment modifier ta requête pour avoir le résultat attendu.

    D'ailleurs je suis étonné que ton SGBD laisse passer cette requête, vu que title n'est pas une expression booléenne…

    Tatayo?

  3. #3
    Nouveau membre du Club
    Merci du retour du coup j'ai essayé ça :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT * FROM `articles` WHERE (`title` LIKE "%$motclé%" ) OR (`resume` LIKE "%$motclé%") OR (`content` LIKE "%$motclé%")


    Cela semble fonctionné mais il y aurait une solution plus simple pour arriver au même résultat ?

  4. #4
    Membre éprouvé
    La factorisation la plus poussée que j'ai trouvée utilise le row-value constructor aka constructeur de lignes valuées :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    select * from articles where (title, resume, content) = ('motclé','motclé','motclé')
    et hic ça n'accepte pas l'opérateur like, pas or uniquement and, au moins avec postgres.
    ... donc on dirait que non.

  5. #5
    Nouveau membre du Club
    OK, merci pour votre aide.
    Je peux classer ce post en statut "résolu"

  6. #6
    Expert éminent
    Je vois bien une solution, mais moche:
    Code sql :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM articles WHERE title | resume | content LIKE '%$motclé%'


    Tatayo.