3
votes

Recherche multiple et recherche en SQL

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%'


0 commentaires

3 Réponses :


1
votes

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%'


1 commentaires

Je vous remercie! c'était ça et si facile.



0
votes

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%')


0 commentaires

1
votes

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');


0 commentaires