SQL OR LIKE ..

SQL OR LIKE .. - SQL/NoSQL - Programmation

Marsh Posté le 21-07-2009 à 14:08:08    

Bonjour, je m'émerveille parfois de la longueur de certaines requetes avec la clause like
 

Code :
  1. Where champ like('%motclef1%') or champ like('%motclef1%') .. OR champ2 like('%motclef3%') "


 
je me demandais s'il existe une syntaxe proche du regex permettant de le faire ainsi  

Code :
  1. where champ like('%motclef1|motclef2|motclef3%')


voire

Code :
  1. where champ,champ2,champ3 like('%motclef1|motclef2|motclef3%')


does anyone got a good idea ?  :jap:


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 21-07-2009 à 14:08:08   

Reply

Marsh Posté le 21-07-2009 à 14:18:34    

Au pire tu te fais ta fonction qui crée ta requête comme il faut en fournissant un tableau pour les champs et un pour les mots-clés. ;)


Message édité par Deamon le 21-07-2009 à 14:18:53
Reply

Marsh Posté le 21-07-2009 à 14:25:44    

c'est déjà le cas, mais je trouve la procédure n°3 tellement plus propre et nette !
à quand mysql version 6 ?


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 21-07-2009 à 14:37:36    

grosbin a écrit :

Bonjour, je m'émerveille parfois de la longueur de certaines requetes avec la clause like
 

Code :
  1. Where champ like('%motclef1%') or champ like('%motclef1%') .. OR champ2 like('%motclef3%') "


 
je me demandais s'il existe une syntaxe proche du regex permettant de le faire ainsi  

Code :
  1. where champ like('%motclef1|motclef2|motclef3%')


voire

Code :
  1. where champ,champ2,champ3 like('%motclef1|motclef2|motclef3%')


does anyone got a good idea ?  :jap:


 
1) Non.
2) Quand on ne sait pas parler anglais, on évite.
 

grosbin a écrit :

c'est déjà le cas, mais je trouve la procédure n°3 tellement plus propre et nette !
à quand mysql version 6 ?


 
SQL != mysql
Ce n'est pas mysql qui fait la norme.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-06-2010 à 18:02:12    

Un petit UP (depuis un an ca a peut etre changé).
 
dans : SELECT ..... WHERE var LIKE '%oi%' OR var LIKE 'op' OR var LIKE '%ml'
 
pour mysql il y a t'il une syntaxe autre pour eviter de repeter le "var LIKE" ??
 

Reply

Marsh Posté le 22-06-2010 à 22:09:34    

non, perso jamais trouvé, surtout quand les requêtes se font longues


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 23-06-2010 à 15:53:07    

hutarios a écrit :

Un petit UP (depuis un an ca a peut etre changé).

 

dans : SELECT ..... WHERE var LIKE '%oi%' OR var LIKE 'op' OR var LIKE '%ml'

 

pour mysql il y a t'il une syntaxe autre pour eviter de repeter le "var LIKE" ??

 


 

Oui, ça donne ceci:

 

SELECT ..... WHERE var REGEXP '(.*oi.*|op|.*ml)'

 

et si tu veux tester sur plusieurs colonnes d'un coup tu peux toujours faire

 

SELECT ..... WHERE CONCAT(var,var2,var3) REGEXP '(.*oi.*|op|.*ml)'

Message cité 1 fois
Message édité par jeff@be le 23-06-2010 à 15:55:26
Reply

Marsh Posté le 24-06-2010 à 09:55:52    

jeff@be a écrit :


 
Oui, ça donne ceci:
 
SELECT ..... WHERE var REGEXP '(.*oi.*|op|.*ml)'
 
et si tu veux tester sur plusieurs colonnes d'un coup tu peux toujours faire
 
SELECT ..... WHERE CONCAT(var,var2,var3) REGEXP '(.*oi.*|op|.*ml)'


 
Merci, j'avais pas pensé a REGEXP (je connais pas bcp)
 
Maintenant il me reste plus qu'a bouquiner la doc ... au passage si quelqu'un a un bon tuto je suis preneur.

Reply

Marsh Posté le 16-07-2010 à 13:31:10    

Si tu utilises MYSQL avec le moteur de stockage MyISAM tu as les index FULLTEXT
 
Ta base semble être faite pour des recherches sur mot-clé et c'est tout à fait approprié :
 
Exemple :

Code :
  1. SELECT ...
  2.          WHERE MATCH (title,body) AGAINST ('motcle1 motcle2 motcle3');


 
Documentation complète sur :  
http://dev.mysql.com/doc/refman/5. [...] earch.html

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed