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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 常熟市| 从化市| 南靖县| 新郑市| 区。| 万年县| 承德市| 洛宁县| 铜川市| 宁海县| 若尔盖县| 六盘水市| 鸡东县| 普兰店市| 林州市| 保山市| 兴文县| 汶川县| 郁南县| 漳浦县| 隆尧县| 竹北市| 合作市| 广河县| 平顶山市| 永清县| 云浮市| 宁晋县| 钟山县| 芮城县| 太白县| 汾阳市| 自贡市| 建昌县| 隆昌县| 普兰县| 疏附县| 法库县| 资溪县| 菏泽市| 江西省|