我有這需要的是在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