J'ai une fonction qui prend une dispute utilisée dans la clause
fonction (String X) -> Maintenant, cela créera une requête SQL qui donne P>
select colname from tablename;
9 Réponses :
Laissez simplement la condition de l'état.
Si vous voulez vraiment que cela soit compliqué, utilisez p> qui ne filtrera que des nulls. p> p>
Si vous devez autoriser "tous" à passer par la valeur de paramètre à votre fonction, vous devrez mettre un code de manipulation dans votre fonction pour construire votre instruction SELECT en conséquence. C'est à dire. Vous pouvez détecter si le paramètre est «tout» dedans, puis omettez la clause WHERE de votre relevé SQL. Si une valeur autre que «tout» vient à travers, vous pouvez inclure la clause WHERE avec la valeur de filtrage correspondante du paramètre.
Un exemple d'un morceau de code pour le faire serait; P>
IF x = 'ALL' THEN SELECT COLNAME FROM TABLENAME; ELSE SELECT COLNAME FROM TABLENAME WHERE COLUMNNAME = X; END IF;
On ne sait pas quelle langue que vous utilisiez pour votre fonction, mais vous devez analyser en quelque sorte le «tout» avant de vous rendre à SQL:
public void query(String param) {
String value = "":
switch (param) {
case 'All':
value = "*";
break;
default:
value = param;
}
String sql = "select colname from tablename where colname="+value;
//make the query
}
Ce n'est pas explicite, mais la lecture entre les lignes qu'ils semblent utiliser PL / SQL dans MySQL.
select colname from tablename
where columnname=(case when @x ="All" then columnname
else @x end)
Donnez une vérification conditionnelle dans votre code (supposer Java) pour ajouter le où code> clause uniquement lorsque x! = 'Tout' code>
Essayez ceci espère que ce qui précède fonctionnera p> p>
J'ai eu le même problème il y a quelque temps et cette solution a fonctionné pour moi
Soins à élaborer?
Le "ou" dans la clause de l'endroit où fait le tour ici. Si la condition ColumnameName = X est remplie, la clause WHERE filtre les résultats. Autres ci-dessus si le x = 'tout' alors la clause d'où est contournée. Éliminant ainsi le filtre.
const queryoptions = req.query.id!=null?{id : req.query.id } : true;
let query = 'SELECT * FROM table_name WHERE ?';
db.query(query,queryoptions,(err,result)=>{
res.send(result);
}
où 1 = 1 a fonctionné pour moi, bien que la clause a été utilisée, tous les enregistrements ont été sélectionnés. P>
Vous pouvez aussi essayer p>
[Any_column_name] = [colonne_name_in_lhl] p>
(LHL = côté gauche.) p>