Rising Sun

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks

          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

          posted on 2006-07-26 14:24 brock 閱讀(414) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 分宜县| 莲花县| 远安县| 犍为县| 修文县| 杭锦后旗| 台湾省| 武义县| 辽中县| 龙南县| 资阳市| 江源县| 伊金霍洛旗| 黄大仙区| 文水县| 博野县| 西和县| 财经| 景宁| 肃北| 威宁| 安岳县| 昌图县| 高尔夫| 黄石市| 泸水县| 镇江市| 永善县| 固阳县| 灵宝市| 甘谷县| 双鸭山市| 合江县| 微博| 土默特右旗| 梧州市| 连城县| 太湖县| 七台河市| 安溪县| 龙江县|