我有这需要的是在where子句让所有结果使用where子句
功能(串x)使用的参数的函数 - >现在,这将创建一个SQL查询,这给
select colname from tablename where columnname=x;
现在我想这一功能给所有行即查询相当于
select colname from tablename;
当我通过X =“全部”。
我想创建一个通用查询,当我通过“全部”,那么它应该返回我所有的行其他筛选我的结果。
我有这需要的是在where子句让所有结果使用where子句
功能(串x)使用的参数的函数 - >现在,这将创建一个SQL查询,这给
select colname from tablename where columnname=x;
现在我想这一功能给所有行即查询相当于
select colname from tablename;
当我通过X =“全部”。
我想创建一个通用查询,当我通过“全部”,那么它应该返回我所有的行其他筛选我的结果。
只是离开了哪里的条件。
如果你真的想那么复杂使用
where columnname LIKE '%'
这只会过滤空值。
如果您必须允许将'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;
目前还不清楚你所使用的语言为你的功能,但是你必须以某种方式对“所有”之前获得到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
}
select colname from tablename
where columnname=(case when @x ="All" then columnname
else @x end)
给有条件的支票你的代码(假设Java)来追加WHERE
条款,只有当x != 'All'
mySqlQuery = "SELECT colname FROM tablename" +
(x.equals("All") ? "" : "WHERE columnname = "+x);
试试这个
select colname from tablename where 1=1
希望以上将工作
我前一段时间有同样的问题,这个解决方案为我
select colname from tablename where columnname=x or x = 'ALL'
谨慎阐述? – RamenChef 2016-11-29 20:09:40
where子句中的“or”在这里执行这个技巧。如果满足条件columnname = x,则where子句过滤结果。其他如果x ='ALL'则where子句被绕过。从而移除过滤器。 – 2017-04-26 13:51:11
这是不明确的,但在字里行间,他们似乎是在MySQL中使用PL/SQL。 – 2012-07-27 06:30:01