[英]Is it possible to use “WHERE” clause to select all records in SQL Statement?
晚上好,我很好奇是否可以在可以顯示所有記錄的 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 ";
嘗試使用WHERE 1=1
::
Select * from myTable WHERE 1=1
這也有效:
WHERE columnname LIKE '%'
除了 NULL 值。
最好區分這兩種情況並從中進行 2 次查詢。
where 1=1 對我有用,盡管使用了 where 子句,但所有記錄都被選中。
你也可以試試
SELECT * FROM Customers
WHERE CustomerID=CustomerID; /* query */
或 [any_column_name]=[column_name_in_LHL]
(LHL=左側。)
復制查詢並 單擊此處嘗試代碼
考慮在查詢本身內部移動特殊情況,例如
SELECT * FROM table_example WHERE '<%=passVar%>' IN ('ALL', First_Col)
嘗試使用通配符值'%'
但我建議在此處使用 Factory 來創建 SQL 語句,您嘗試執行的操作有點味道。
您還可以做的其他事情是使代碼和 SQL 的組合成為單個查詢。 這意味着 IF..ELSE 將使用 SQL 語言。
檢查這些鏈接以獲取更多信息:
MySQL
在 SQL Select 語句中使用 If else
在 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 的行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.