程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 深刻懂得where 1=1的用途

深刻懂得where 1=1的用途

編輯:MySQL綜合教程

深刻懂得where 1=1的用途。本站提示廣大學習愛好者:(深刻懂得where 1=1的用途)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻懂得where 1=1的用途正文


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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved