2013-10-17 74 views
0

晚上好,我很好奇,如果可以在可以顯示所有記錄的SQL語句中創建WHERE子句?是否可以使用「WHERE」子句選擇SQL語句中的所有記錄?

下面一些解釋:

隨機SQL語句(的Java) - (JSP示例),正常情況下如果

String SqlStatement = "SELECT * FROM table_example WHERE First_Col = '<%=passVar%>' "; 
db.query(SqlStatement); 
//........ 
//........ 

passVar是「ALL ',我們需要在passVar =全部時提示所有記錄。我知道我可以的if-else做到這一點,並檢查passVar是 「ALL」,那麼查詢沒有-WHERE語句,使其工作..

**without-WHERE statement (Java)-(JSP example)** 
if(<%=passVar%> == "ALL") { 
    SqlStatement = "SELECT * FROM table_example"; 
} else { 

    SqlStatement = "SELECT * FROM table_example WHERE First_Col = '<%=passVar%>' "; 
} 

但我可以編寫一個SQL語句來使所有記錄提示嗎?類似下面:

的Java) - (JSP示例

String ShowAll = ""; 
if(<%=passVar%> == "ALL") { 
    ShowAll = *; 

} else { 
    ShowAll = <%=passVar%>; 
} 
SqlStatement = "SELECT * FROM table_example WHERE First_Col = ShowAll "; 
+1

您還將scriptlet代碼放入JSP中嗎?數據庫調用?可怕。 – duffymo

+0

大聲笑,我只是可以按照我的公司的規則... 真的很抱歉... –

回答

0

這也適用於:

WHERE columnname LIKE '%' 

除了NULL值。

+0

謝謝,我會試試它... 只是爲了驗證,如果我們使列名LIKE'%',它是否會檢索以''(空格)開頭的數據? –

+0

是的,它會這樣做 – Baksteen

7

嘗試用WHERE 1=1 ::

Select * from myTable WHERE 1=1 
+0

OP如何插入在腳本中只使用一個查詢? –

0

用通配符值'%'但我嘗試會建議在這裏使用Factory來創建SQL語句,你想做什麼聞起來有點味道。

0

考慮在查詢本身內移動特殊情況,例如,

SELECT * FROM table_example WHERE '<%=passVar%>' IN ('ALL', First_Col) 
0

這將是更好的不同的2種情況,使2個查詢出來。

  • 如果沒有其中條件,那麼DB不需要對其進行評估(potencially更快)
  • 的源代碼/調試輸出更清晰。
+0

雅,目前我使用兩個查詢... 但我的一位朋友已經提到,當程序越來越大/更大,那麼最好找到一種方法來做一個查詢而不是2或更多,它是可選的... 謝謝... –