mysql where 1 作用_mysql中使用 where 1=1和 0=1 的作用

操作mysql的時候,經常使用where語句進行查詢。當where語句不存在的時候,經常在后面加一個where 1=1

where 1=1; 這個條件始終為True,在不定數量查詢條件情況下,1=1可以很方便的規范語句。

一、不用where 1=1 在多條件查詢中的困擾

舉個例子,如果您做查詢頁面,並且,可查詢的選項有多個,同時,還讓用戶自行選擇並輸入查詢關鍵詞,那么,按平時的查詢語句的動態構造,代碼大體如下:

stringMySqlStr=”select*fromtable where”;if(Age.Text.Lenght>0){MySqlStr=MySqlStr+“Age=“+“'Age.Text'“;}if(Address.Text.Lenght>0){MySqlStr=MySqlStr+“andAddress=“+“'Address.Text'“;}

第一種種假設

如果上述的兩個IF判斷語句,均為True,即用戶都輸入了查詢詞,那么,最終的MySqlStr動態構造語句變為:

MySqlStr=”select*fromtable whereAge='18'andAddress='雲南省文山州廣南縣小波嗎村'”

可以看得出來,這是一條完整的正確的SQL查詢語句,能夠正確的被執行,並根據數據庫是否存在記錄,返回數據。

第二種假設

如果上述的兩個IF判斷語句不成立,那么,最終的MySqlStr動態構造語句變為:

MySqlStr=”select*fromtable where“

現在,我們來看一下這條語句,由於where關鍵詞后面需要使用條件,但是這條語句根本就不存在條件,所以,該語句就是一條錯誤的語句,肯定不能被執行,不僅報錯,同時還不會查詢到任何數據。

上述的兩種假設,代表了現實的應用,說明,語句的構造存在問題,不足以應付靈活多變的查詢條件。

二、使用 where 1=1 的好處

假如我們將上述的語句改為:

stringMySqlStr=”select*fromtable where1=1”;if(Age.Text.Lenght>0){MySqlStr=MySqlStr+“andAge=“+“'Age.Text'“;}if(Address.Text.Lenght>0){MySqlStr=MySqlStr+“andAddress=“+“'Address.Text'“;}

現在,也存在兩種假設

第一種假設

如果兩個IF都成立,那么,語句變為:

MySqlStr=”select*fromtable where1=1andAge='18'andAddress='雲南省文山州廣南縣小波嗎村'”

很明顯,該語句是一條正確的語句,能夠正確執行,如果數據庫有記錄,肯定會被查詢到。

第二種假設

如果兩個IF都不成立,那么,語句變為:

MySqlStr=”select*fromtable where1=1”,

現在,我們來看這條語句,由於where 1=1 是為True的語句,因此,該條語句語法正確,能夠被正確執行,它的作用相當於:MySqlStr=”select * from table”,即返回表中所有數據。

言下之意就是:如果用戶在多條件查詢頁面中,不選擇任何字段、不輸入任何關鍵詞,那么,必將返回表中所有數據;如果用戶在頁面中,選擇了部分字段並且輸入了部分查詢關鍵詞,那么,就按用戶設置的條件進行查詢。

說到這里,不知道您是否已明白,其實,where 1=1的應用,不是什么高級的應用,也不是所謂的智能化的構造,僅僅只是為了滿足多條件查詢頁面中不確定的各種因素而采用的一種構造一條正確能運行的動態SQL語句的一種方法。

where 1=0; 這個條件始終為false,結果不會返回任何數據,只有表結構,可用於快速建表

"SELECT * FROM strName WHERE 1 = 0";

該select語句主要用於讀取表的結構而不考慮表中的數據,這樣節省了內存,因為可以不用保存結果集。

create table newtable asselect*fromoldtable where1=0;

創建一個新表,而新表的結構與查詢的表的結構是一樣的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值