是否可以使用“WHERE”子句来选择 SQL 语句中的所有记录?
Posted
技术标签:
【中文标题】是否可以使用“WHERE”子句来选择 SQL 语句中的所有记录?【英文标题】:Is it possible to use "WHERE" clause to select all records in SQL Statement? 【发布时间】:2013-10-25 20:37:08 【问题描述】:晚上好,我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录?
下面是一些解释:
随机SQL语句(Java)-(JSP示例),正常情况
String SqlStatement = "SELECT * FROM table_example WHERE First_Col = '<%=passVar%>' ";
db.query(SqlStatement );
//........
//........
如果passVar为'ALL',当passVar = All时需要提示所有记录呢?我知道我可以使用 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 ";
【问题讨论】:
您还在 JSP 中放置 scriptlet 代码吗?数据库调用?太可怕了。 大声笑,我只能遵守公司的规则……真的很抱歉…… 【参考方案1】:试试WHERE 1=1
::
Select * from myTable WHERE 1=1
【讨论】:
OP 如何在脚本中插入它以仅使用一个查询?【参考方案2】:尝试使用通配符值'%'
,但我建议在此处使用工厂来创建 SQL 语句,您尝试执行的操作有点味道。
【讨论】:
【参考方案3】:考虑在查询本身内移动特殊情况,例如
SELECT * FROM table_example WHERE '<%=passVar%>' IN ('ALL', First_Col)
【讨论】:
【参考方案4】:这也有效:
WHERE columnname LIKE '%'
NULL 值除外。
【讨论】:
谢谢,我会试试...只是为了验证一下,如果我们将列名设为 LIKE '%',它是否会检索以''(空格)开头的数据? 是的,它会这样做 是否也可以包含 NULL 值?【参考方案5】:您可以做的其他事情是将代码和 SQL 组合成一个查询。这意味着 IF..ELSE 将使用 SQL 语言。
查看这些链接了解更多信息:mysqlUsing If else in SQL Select statement
【讨论】:
【参考方案6】:最好区分这两种情况并从中进行 2 次查询。
如果没有 where 条件,则数据库不需要评估它(可能更快) 源代码/调试输出更清晰。【讨论】:
是的,目前我使用两个查询...但是我的一个朋友提到,当程序变大/更大时,最好找到一种方法来进行一次查询而不是 2 或更多,它是可选的...谢谢... 你知道 - 这对我来说非常有意义,我完全停止了这种思路,只是又提出了一个问题。几行额外的代码与调试条件查询的噩梦之间的区别是显而易见的。【参考方案7】:在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的行
【讨论】:
【参考方案8】:where 1=1 对我有用,虽然使用了 where 子句,但所有记录都被选中。
你也可以试试
SELECT * FROM Customers
WHERE CustomerID=CustomerID; /* query */
或 [any_column_name]=[column_name_in_LHL]
(LHL=左侧。)
复制查询并 click here to try code
【讨论】:
以上是关于是否可以使用“WHERE”子句来选择 SQL 语句中的所有记录?的主要内容,如果未能解决你的问题,请参考以下文章