簡體   English   中英

是否可以使用“WHERE”子句來選擇 SQL 語句中的所有記錄?

[英]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 條件,那么數據庫不需要評估它(可能更快)
  • 源代碼/調試輸出更清晰。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM