SQL --- where 1=1 與 1<> 1


1、Sql 中的查詢語句中的where 字句是為了帶條件進行查詢,那么使用where 1=1  后查詢的是什么

首先:查詢表   tb_obge  中的所有字段

select * from dbo.obgexinzi

也可以寫成

select * from dbo.obgexinzi where 1=1

因為  1=1 表示永遠為真,不起約束作用查詢所有,不會報錯

1=1 只是為了表示永真,你使用  1<2    a='a',也行,為啥使用where 1=1來,因為 1=1 的運算開銷更小,所以常用

 

 

 2、既然使用where 1=1   和沒有使用的效果相同為啥還要用來?

動態查詢的時候可以使用,經常見的查詢條件

 

 

 列句:

String sql ="select * from obgexinzi where 1=1"
if (this.tbsqlUserName.Text.Trim() != string.Empty)//姓名
{
strSql += " and Name like '%" + this.tbsqlUserName.Text.Trim() + "%'";
}

if (this.ddlUserSex.Text.Trim() != string.Empty)//性別
{
strSql += " and Sex like '%" + this.ddlUserSex.SelectedValue + "%'";
}

如果要是不使用 where  1=1  ,那么就要用程序進行判斷什么時候使用   and

因為這樣無疑是錯的。

select * from obgexinzi where and Name like

而且你也很難判斷,用戶使用的是那幾個查詢條件進行組合查詢,要不要加where 或直接用 and ,無疑會,提高程序復雜度

加上后,不管有沒有查詢條件都不會出錯,只要判斷條件是不是為空就行,提高運行的效率。

select * from obgexinzi where 1=1 and Name like

 

3、sql 注入,使用 or 1=1  會把表中所有數據查出來,

查尋沒有什么感覺要是使用  刪除語句哪

delete from  obgexinzi where Name = '周瑜' or 1=1

--刪除表中所有

 

 

4、 where  1=1  與  1<> 1  之間的關系

select * from obgexinzi where 1=1
-- 實際等效於select * from obgexinzi where true;-- 語句將返回t1中所有的記錄行

select * from obgexinzi where 1<>1 -- 實際等效於 select * from obgexinzi where false;-- 語句將返回空記錄集
where 1<>1 的作用

當我們只需要獲取表的字段(結構)信息,而不需要理會實際保存的記錄時,可以使用where 1<> 1
因為系統僅會讀取結構信息,而不會將具體的表記錄讀入內存中,這無疑節省了系統開銷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM