SQL中where 1 1語句的作用

2021-06-26 21:19:46 字數 941 閱讀 1970

where 1=1有什麼用?在sql語言中,寫這麼一句話就跟沒寫一樣。但是這看似多餘的一條語句,卻有其獨特的用處。

select * from table1 where 1=1與select * from table1完全沒有區別,甚至還有其他許多寫法,1<>2,'a'='a','a'<>'b',其目的就只有乙個,where的條件為永真,得到的結果就是未加約束條件的。

在sql注入時會用到這個,例如select * from table1 where name='lala'給強行加上select * from table1 where name='lala' or 1=1這就又變成了無約束的查詢了。

最近發現的妙用在於,在不定數量查詢條件情況下,1=1可以很方便的規範語句。例如乙個查詢可能有name,age,height,weight約束,也可能沒有,那該如何處理呢?

string sql=select * from table1 where 1=1

為什麼要寫多餘的1=1?馬上就知道了。

if(!name.equals(""))

if(!age.equals(""))

if(!height.equals(""))

if(!weight.equals(""))

如果不寫1=1呢,那麼在每乙個不為空的查詢條件面前,都必須判斷有沒有where字句,否則要在第乙個出現的地方加where

今天看到:"select * from strname where 1 = 0";

不理解為什麼有1=0?

查詢得出答案:

該select語句主要用於讀取表的結構而不考慮表中的資料,這樣節省了記憶體,因為可以不用儲存結果集。

另外,這個用在什麼地方呢?主要用於建立乙個新錶,而新錶的結構與查詢的表的結構是一樣的。如下sql語句:

create table newtable as select * from oldtable where 1=0;

sql語句中的where 1 1

1 1 永真,1 1 永假 1 1 的用處 用於只取結構不取資料的場合 例如 create table table temp tablespace tbs temp as select from table ori where 1 1 建成乙個與table ori 結構相同的表table temp,...

sql語句中where 1 1的作用

where 1 1 最近看到很多sql裡用到where 1 1,原來覺得這沒用嘛,但是又想到如果沒用為什麼要寫呢?於是在網上 查了查,在這裡就 一下 1 1 永真,1 1 永假。1 1 的用處 用於只取結構不取資料的場合 例如 create table table temp tablespace t...

sql語句中where 1 1的作用

where 1 1 最近看到很多sql裡用到where 1 1,原來覺得這沒用嘛,但是又想到如果沒用為什麼要寫呢?於是在網上 查了查,在這裡就 一下 1 1 永真,1 1 永假。1 1 的用處 用於只取結構不取資料的場合 例如 create table table temp tablespace t...