我有一个函数,它接受在where子句
中使用的参数function(string x) - >现在这将创建一个提供
的sql查询select colname from tablename where columnname=x;
现在我想让这个函数给出所有行,即查询等效于
select colname from tablename;
当我通过x =“全部”时。
我想创建一个通用查询,当我传递“All”时,它应该返回我所有的行,否则过滤我的结果。
答案 0 :(得分:10)
离开那里的条件。
如果你真的想要那么复杂的使用
where columnname LIKE '%'
只会过滤空值。
答案 1 :(得分:6)
select colname from tablename
where columnname=(case when @x ="All" then columnname
else @x end)
答案 2 :(得分:2)
试试这个
select colname from tablename where 1=1
希望以上内容能够发挥作用
答案 3 :(得分:1)
其中1 = 1对我有用,尽管使用了where子句,但选择了所有记录。
您也可以尝试
[any_column_name] = [column_name_in_LHL]
(LHL =左侧)。
答案 4 :(得分:0)
如果必须允许'ALL'作为参数值传递给函数,那么您需要在函数中放置一些操作代码来相应地构造SELECT语句。即您可以检测参数中是否包含“ALL”,然后从SQL语句中省略WHERE子句。如果“ALL”以外的值通过,则可以包含WHERE子句以及参数中的相关过滤器值。
执行此操作的一段代码示例是
IF x = 'ALL'
THEN
SELECT COLNAME FROM TABLENAME;
ELSE
SELECT COLNAME FROM TABLENAME WHERE COLUMNNAME = X;
END IF;
答案 5 :(得分:0)
目前还不清楚你的函数使用的语言是什么,但在获取sql之前你必须以某种方式解析'All':
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
}
答案 6 :(得分:0)
对代码进行条件检查(假设Java)仅在WHERE
x != 'All'
子句
mySqlQuery = "SELECT colname FROM tablename" +
(x.equals("All") ? "" : "WHERE columnname = "+x);
答案 7 :(得分:0)
前段时间我遇到了同样的问题,这个解决方案对我有用
select colname from tablename where columnname=x or x = 'ALL'
答案 8 :(得分:0)
SELECT * FROM table_name WHERE 1;
SELECT * FROM table_name WHERE 2;
SELECT * FROM table_name WHERE 1 = 1;
SELECT * FROM table_name WHERE true;
以上任何查询都会返回表中的所有记录。 在必须将条件作为参数传递的Node.js中,我像这样使用它。
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);
}