最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解where 1=1的用處

 更新時(shí)間:2013年06月07日 10:18:27   作者:  
本篇文章是對(duì)where 1=1的用處進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

where 1=1有什么用?在SQL語(yǔ)言中,寫(xiě)這么一句話就跟沒(méi)寫(xiě)一樣。

select * from table1 where 1=1與select * from table1完全沒(méi)有區(qū)別,甚至還有其他許多寫(xiě)法,1<>2,'a'='a','a'<>'b',其目的就只有一個(gè),where 的條件為永真,得到的結(jié)果就是未加約束條件的。

在SQL注入時(shí)會(huì)用到這個(gè),例如select * from table1 where name='lala'給強(qiáng)行加上select * from table1 where name='lala' or 1=1這就又變成了無(wú)約束的查詢了。

最近發(fā)現(xiàn)的妙用在于,在不定數(shù)量查詢條件情況下,1=1可以很方便的規(guī)范語(yǔ)句。例如一個(gè)查詢可能有name,age,height,weight約束,也可能沒(méi)有,那該如何處理呢?

String sql=select * from table1 where 1=1

為什么要寫(xiě)多余的1=1?馬上就知道了。

復(fù)制代碼 代碼如下:

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+"'";
}

如果不寫(xiě)1=1呢,那么在每一個(gè)不為空的查詢條件面前,都必須判斷有沒(méi)有where字句,否則要在第一個(gè)出現(xiàn)的地方加where

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

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

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

復(fù)制表結(jié)構(gòu)
create   table_name   as   select   *   from   Source_table   where   1 <> 1;

相關(guān)文章

  • MySQL長(zhǎng)連接短連接面試精講

    MySQL長(zhǎng)連接短連接面試精講

    這篇文章主要為大家介紹了MySQL長(zhǎng)連接短連接面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • mysql 獲取今天、昨天0點(diǎn)時(shí)間戳的實(shí)例

    mysql 獲取今天、昨天0點(diǎn)時(shí)間戳的實(shí)例

    今天小編就為大家分享一篇mysql 獲取今天、昨天0點(diǎn)時(shí)間戳的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 如何選擇合適的MySQL存儲(chǔ)引擎

    如何選擇合適的MySQL存儲(chǔ)引擎

    MySQL有多種存儲(chǔ)引擎,MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。
    2011-09-09
  • linux安裝mysql 8.0.x的完整步驟

    linux安裝mysql 8.0.x的完整步驟

    這篇文章主要給大家介紹了關(guān)于linux安裝mysql 8.0.x的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 優(yōu)化mysql的limit offset的例子

    優(yōu)化mysql的limit offset的例子

    在mysql中,通常使用limit做分頁(yè),而且經(jīng)常會(huì)跟order by 連用。在order by 上加索引有時(shí)候是很有幫助的,不然系統(tǒng)會(huì)做很多的filesort
    2013-02-02
  • SQL中EXPLAIN命令的使用方法

    SQL中EXPLAIN命令的使用方法

    這篇文章主要給大家介紹了關(guān)于SQL中EXPLAIN命令的使用方法,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 一文帶你理解MySql中explain結(jié)果filtered

    一文帶你理解MySql中explain結(jié)果filtered

    使用EXPLAIN關(guān)鍵字可以模擬優(yōu)化器執(zhí)行SQL查詢語(yǔ)句,從而知道MySQL是如何處理你的SQL語(yǔ)句的,下面這篇文章主要給大家介紹了關(guān)于MySql中explain結(jié)果filtered的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 怎樣安全地關(guān)閉MySQL實(shí)例

    怎樣安全地關(guān)閉MySQL實(shí)例

    這篇文章主要介紹了怎樣安全地關(guān)閉MySQL實(shí)例,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-07-07
  • MySQL自增ID用完的幾種解決方案

    MySQL自增ID用完的幾種解決方案

    MySQL的自增ID(AUTO_INCREMENT)用完之后,會(huì)出現(xiàn)重復(fù)ID的問(wèn)題,那么如何解決這個(gè)問(wèn)題呢,接下本文就給大家介紹MySQL自增ID用完的幾種解決方案,需要的朋友可以參考下
    2023-07-07
  • mysql8報(bào)錯(cuò):ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT解決辦法

    mysql8報(bào)錯(cuò):ERROR?1410?(42000):?You?are?not?allowed?to?

    電腦新裝的mysql,版本為8.0以上,分配權(quán)限時(shí)直接帶密碼和賬號(hào)會(huì)報(bào)錯(cuò),這篇文章主要給大家介紹了關(guān)于mysql8報(bào)錯(cuò):ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT的解決辦法,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

襄汾县| 临夏市| 航空| 海阳市| 广丰县| 陇川县| 石林| 西乌珠穆沁旗| 内丘县| 乌审旗| 盐池县| 富平县| 德格县| 西乌珠穆沁旗| 阳泉市| 衡山县| 临城县| 平谷区| 刚察县| 盖州市| 新巴尔虎左旗| 射洪县| 丽水市| 林口县| 云梦县| 兴业县| 民和| 桦南县| 比如县| 油尖旺区| 屏山县| 修武县| 宁阳县| 海门市| 奈曼旗| 四川省| 木里| 长乐市| 天气| 穆棱市| 无为县|