Je suis nouveau dans SQL et je suis coincé sur une recherche multiple dans SQL.
Ici, j'essaye de rechercher table1 dans les trois colonnes. Mais j'essaye de trouver deux phrases. J'essaye avec une instruction OR.
Si je supprime OU J'AIME «% paris%», cela fonctionne mais comment puis-je trouver plusieurs mots / phrases. Et cette déclaration serait-elle sensible à la casse?
J'utilise également MySQL pour exécuter ce qui précède.
SELECT * FROM `table1`
WHERE
CONCAT_WS('|',`target_1`,`target_2`,`target_3`)
LIKE '%london%' OR LIKE '%paris%'
3 Réponses :
Dans votre code, votre deuxième condition est sintactiquement incorrecte car il manque la partie a pour la correspondance
donc vous devriez répéter la condition comme
SELECT *
FROM `table1`
WHERE CONCAT_WS('|',`target_1`,`target_2`,`target_3`) LIKE '%london%'
OR CONCAT_WS('|',`target_1`,`target_2`,`target_3`) LIKE '%paris%'
Je vous remercie! c'était ça et si facile.
Vous devriez répéter l'opérande de gauche et utiliser (peut-être?) plusieurs conditions d'entrées / sorties concaténant:
SELECT * FROM `table1` WHERE (`target_1` like '%london%' OR `target_1` like '%paris%') AND (`target_2` like '%london%' OR `target_2` like '%paris%') AND (`target_3` like '%london%' OR `target_3` like '%paris%')
Une option consiste à utiliser une expression régulière, puis vous pouvez également avoir une correspondance insensible à la casse (3ème paramètre à REGEXP_LIKE)
SELECT *
FROM table1
WHERE REGEXP_LIKE(CONCAT_WS('|',`target_1`,`target_2`,`target_3`), 'london|paris', 'i');