multiples EREGI dans un requête SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : multiples EREGI dans un requête SQL

par AB » 06 mars 2008, 19:03

Dans ton cas, utiliser une régex dans ta requête serait certainement plus rapide que plusieurs LIKE (à tester)
$sql = "SELECT * FROM table WHERE champ1=2007 AND champ2 REGEXP '.*[S|J|V]' ORDER BY nom";
EDIT ça serait bien d'indiquer un ordre descendant (DESC) ou ascendant(ASC) pour le tri sur le nom

Pour un ordre ascendant ça donnerait
$sql = "SELECT * FROM table WHERE champ1=2007 AND champ2 REGEXP '.*[S|J|V]' ORDER BY nom ASC";

par d0m » 06 mars 2008, 16:29

de la même manière que ton expression, avec des ou :

Code : Tout sélectionner

SELECT.... FROM... WHERE champ LIKE .... OR champ LIKE .... OR champ LIKE ....

par zest » 06 mars 2008, 15:54

En fait je reformule ma question: comment faire ce type de requête la plus conciseet rapide possible?
Pour LIKE je vois a peu près, mais la REGEX ???
Comment faire pour tester la présence de S, J, ou V exclusivement ?

par d0m » 06 mars 2008, 14:34

salut,

regarde du coté de la clause LIKE SQL

multiples EREGI dans un requête SQL

par zest » 06 mars 2008, 13:20

Bonjour,

J'ai une requête de ce type:
$sql = "SELECT * FROM table WHERE champ1=2007 ORDER BY nom";
$req = mysql_query($sql, $cnx); 
while ($rslt = mysql_fetch_assoc($req)){
et ensuite je fais un test sur un autre champ2 la présence de certaines lettres:
if(eregi('J',$rslt['champ2']) || eregi('S',$rslt['champ2']) || eregi('V',$rslt['champ2'])){
....
....bla bla bla...
....
}
}// fin du while
Le champ2 est une chaîne pouvant aller de 1 à 3 caractères.
Pourrais-je intégrer directement la structure conditionelle 'if' dans ma requête SQL ?
Et est-ce mieux et/ou plus rapide ?