麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > 幫助中心 > 正文

深入理解where 1=1的用處

2024-07-09 22:47:51
字體:
來源:轉載
供稿:網友

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("")){
sql=sql+"name='"+name+"'";
}
if(!age.equals("")){
sql=sql+"age'"+age+"'";
}
if(!height.equals("")){
sql=sql+"height='"+height+"'";
}
if(!weight.equals("")){
sql=sql+"weight='"+weight+"'";
}

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

where 1=1的寫法是為了檢化程序中對條件的檢測
打個比方有三個參數a, b, c
@sql=select * from tb'
這三個參數都可能為空
這時你要構造語句的話,一個個檢測再寫語句就麻煩
比如
if @a is not null
@sql=@sql + " where a=' + @a
if @b is not null
這里你怎么寫?要不要加where 或直接用 and ?,你這里還要對@a是否為空進行檢測

用上 where 1=1 之后,就不存在這樣的問題, 條件是 and 就直接and ,是or就直接接 or

拷貝表
create   table_name   as   select   *   from   Source_table   where   1=1;

復制表結構
create   table_name   as   select   *   from   Source_table   where   1 <> 1;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久毛片免费观看 | 欧美四级在线观看 | 可以免费看的av | 国产精品成人一区二区三区吃奶 | 国产精品免费视频观看 | 精品国产一区三区| 美女视频网站黄色 | 精品成人av一区二区在线播放 | 97超视频在线观看 | 欧美一级鲁丝片免费看 | av成人免费在线观看 | 久久里面有精品 | 精品一区二区免费 | 最新午夜综合福利视频 | 精品一区二区三区在线观看视频 | 亚洲射吧 | 大奶一级片| 在线观看国产网站 | 视频一区二区中文字幕 | 蜜桃视频在线免费观看 | 精品成人免费视频 | 久久久久91视频 | 免费观看视频在线 | 久久久国产精品免费观看 | 91福利影视 | 久久精品综合视频 | 99re热精品视频 | 国产精品美女久久久久久不卡 | 久久精品国产99国产精品亚洲 | 蜜桃视频最新网址 | 狠狠干91 | 国产精品成人一区二区三区电影毛片 | 狠狠操视频网站 | 久草在线免费看 | 日韩毛片免费观看 | 一区二区三区欧美精品 | 亚洲一区动漫 | 久久久一区二区三区视频 | 国内精品国产三级国产a久久 | 97综合| 男女亲热网站 |