晚上好,我很好奇是否可以在可以显示所有记录的SQL语句中创建WHERE子句?
下面是一些解释:
随机SQL语句( Java ) - ( JSP示例),正常情况
String SqlStatement = "SELECT * FROM table_example WHERE First_Col = '<%=passVar%>' ";
db.query(SqlStatement );
//........
//........
如果 passVar 为'ALL',我们需要在 passVar =全部时提示所有记录?我知道我可以使用if-else来检查 passVar 是否为“ALL”然后查询 without-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 ";
答案 0 :(得分:9)
尝试使用WHERE 1=1
::
Select * from myTable WHERE 1=1
答案 1 :(得分:2)
其中1 = 1对我有用,尽管使用了where子句,但选择了所有记录。
您也可以尝试
SELECT * FROM Customers
WHERE CustomerID=CustomerID; /* query */
或 [any_column_name] = [column_name_in_LHL]
(LHL =左侧)。
复制查询并 click here to try code
答案 2 :(得分:1)
考虑在查询本身内移动特殊情况,例如
SELECT * FROM table_example WHERE '<%=passVar%>' IN ('ALL', First_Col)
答案 3 :(得分:1)
这也有效:
WHERE columnname LIKE '%'
除了NULL值。
答案 4 :(得分:0)
尝试使用通配符值'%'
但是我建议在这里使用Factory来创建SQL语句,你试图做些什么。
答案 5 :(得分:0)
您可以做的其他事情是将代码和SQL的组合作为单个查询。这意味着IF..ELSE将采用SQL语言。
查看这些链接以获取更多信息:
MySQL
Using If else in SQL Select statement
答案 6 :(得分:0)
最好区分两种情况,并从中进行2次查询。
答案 7 :(得分:-1)
在sqlserver上,您可以执行proc:
create proc select_all_on_null
@a int
as
begin
select * from Records where (@a is null or Record_id=@a )
end
当您选择自己的程序时:
make @a in null will select all
如果我是numder
,则会选择具有该ID的行