2013-10-17 72 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或更多,它是可选的... 谢谢... –