資料庫語句
select * from table where 1=1
的用法和作用
這是一種怎樣的查詢語句呢?首先說明,
1=1這種語句,都沒有任何關係,對於您而言,沒有任何損失。
另外,眾多**都有
select *from table where 1=1
此類語句的介紹,並且,針對該類語句,講得實在是讓人越看越迷茫
(乙個抄襲乙個的,簡直不像話
),不知道是在說什麼,導致很多新手不得要領,從而對
其耿耿於懷。
我們先來看看這個語句的結果:
select* from table where 1=1
,其中where 1=1
,由於1=1
永遠是成立的,返回
true,
條件為真;所以,這條語句,就相當於
select * from table
,返回查詢表中的所有資料。
一、不用
where 1=1
在多條件查詢中的困擾
體如下:
stringmysqlstr=」select * from table where」
;if(age.text.lenght>0)
if(address.text.lenght>0)
①
種假設
如果上述的兩個
if判斷語句,均為
true
,即使用者都輸入了查詢詞,那麼,最終的
mysqlstr
動態構造語句變為:
mysqlstr=」select* from table where age=』18′ and address=』
雲南省文山州廣南縣小波嗎村
』」可以看得出來,這是一條完整的正確的
sql查詢語句,能夠正確的被執行,並根據資料庫是否存在記錄,返回資料。
②
種假設
如果上述的兩個
if判斷語句不成立,那麼,最終的
mysqlstr
動態構造語句變為:
mysqlstr=」select* from table where「
現在,我們來看一下這條語句,由於
where
能被執行,不僅報錯,同時還不會查詢到任何資料。
上述的兩種假設,代表了現實的應用,說明,語句的構造存在問題,不足以應付靈活多變的查詢條件。
二、使用
where 1=1
的好處
假如我們將上述的語句改為:
stringmysqlstr=」select * from table where 1=1 」
;if(age.text.lenght>0)
if(address.text.lenght>0)
現在,也存在兩種假設
①
種假設
如果兩個
if都成立,那麼,語句變為:
mysqlstr=」select* from table where 1=1 and age=』18′ and address=』
雲南省文山州廣南縣小波嗎村
』」,很明顯,該語句是一條正確的語句,能夠正確執行,如果資料庫有記錄,肯定會被查詢到。
②
種假設
如果兩個
if都不成立,那麼,語句變為:
mysqlstr=」select* from table where 1=1」
,現在,我們來看這條語句,由於
where1=1
是為true
的語句,因此,該條語句語法正確,能夠被正確執行,它的作用相當於:
mysqlstr=」select * from table」
,即返回表中所有資料。
說到這裡,不知道您是否已明白,其實,
where 1=1
的應用,不是什麼高階的應用,也不是所謂的智慧型化的構造,僅僅只是為了滿足多條件查詢頁面中不確定的各種因素而採用的一種構造一條正確能執行的動態
sql語句的一種方法。
三、我必須使用
where 1=1
才能做多條件查詢嗎
非也,您愛使用就使用,您不喜歡使用就不使用,對於您而言,不損失什麼,也不會多得什麼;
那麼,如果我不使用
where 1=1
做多條件查詢,該如何構造動態查詢語句呢?非常簡單,在下給您提供一種思維:
如下語句:
stringmysqlstr=」select * from table」
;if(age.text.lenght>0)
if(address.text.lenght>0)
if(querysqlstr.lenght>0)
不管你使用不使用
where 1=1
做多條件查詢,只要您能夠保證您構造出來的查詢語句,是正確的就萬無一失了。
四、
where 1=1
的總結
為方便構造動態的多條件之不確定因素的複雜的正確的查詢語句所採取的一種
「江湖手段」。
此類方法,一般,在書籍上不常見,而在實際的應用中,人們得從現實角度考慮,即要保證能滿足多條件查詢、同時還要能應付不確定因素的靈活性,最
後還要保證語句不出現任何語法錯誤。
該方法不失為一種好方法;但是,卻由於這
where 1=1
不知道讓多少新手,琢磨了多少次,始終不得要領,同時,還有可能會誤導新手誤入歧途;
希望本文對您有所幫助。
法月部落格部落格
–
為什麼要用where 1 1?
之前一直不太明白,sql語句裡為什麼要寫where 1 1 巴拉巴拉巴拉 提公升某種執行效率?其實,1 1 是永恆成立的,意思無條件的,也就是說在sql語句中有沒有這個1 1都可以。這個1 1常用於應用程式根據使用者選擇項的不同拼湊where條件時用的。如 web介面查詢使用者的資訊,where預設...
T SQL中WHERE 1 1的作用
1 1或者 a a 等等恒等式是t sql中表達true的方法。因為在t sql中沒有true這樣的關鍵字或值,所以需要借助這些恒等式來表達true的概念。相對的,同樣可以使用1 1或者1 2等來表達false。在應用程式的安全性方面,使用這些式子是sql注入的基本原理,所以在拼接sql語句的時候要...
SQL中WHERE 1 1的作用
個人認為這篇文章寫的非常好,用例子把道理說的非常明白,所以轉了,希望對大家有所幫助。1 1或者 a a 等等恒等式是t sql中表達true的方法。因為在t sql中沒有true這樣的關鍵字或值,所以需要借助這些恒等式來表達true的概念。相對的,同樣可以使用1 1或者1 2等來表達false。在應...