Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2971 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL OR LIKE ..

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL OR LIKE ..

n°1907211
grosbin
OR die;
Posté le 21-07-2009 à 14:08:08  profilanswer
 

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
mood
Publicité
Posté le 21-07-2009 à 14:08:08  profilanswer
 

n°1907221
Deamon
Posté le 21-07-2009 à 14:18:34  profilanswer
 

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
n°1907229
grosbin
OR die;
Posté le 21-07-2009 à 14:25:44  profilanswer
 

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
n°1907246
skeye
Posté le 21-07-2009 à 14:37:36  profilanswer
 

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 -
n°2003836
hutarios
Posté le 22-06-2010 à 18:02:12  profilanswer
 

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" ??
 

n°2003911
grosbin
OR die;
Posté le 22-06-2010 à 22:09:34  profilanswer
 

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


---------------
Photos Panoramiques Montagnes Haute Savoie
n°2004183
jeff@be
Posté le 23-06-2010 à 15:53:07  profilanswer
 

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
n°2004354
hutarios
Posté le 24-06-2010 à 09:55:52  profilanswer
 

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.

n°2009488
meekch
Posté le 16-07-2010 à 13:31:10  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL OR LIKE ..

 

Sujets relatifs
Changer des liens dans une base SQL[SGBD/SQL] oracle spool : nom de colonne tronqué
[SQL Server 2005 & TRIGGER] Exécuter une proc stock automatiquement[SQL SERVER 2005] Script de remplissage de table (BLUK INSERT & cie)
[SQL SERVER 2005] Associer une procédure stockée à une BDDSQL Error -104
PL/SQL : utilisation de variable pour liste de valeur dans requêtePL/SQL : Problème d'apostophes dans génération de liste de valeurs
Requete SQL sélectionnant le plus petit nombre uniqueRequete SQL sous informix
Plus de sujets relatifs à : SQL OR LIKE ..


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR