程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql中IFNULL與IN操作

Mysql中IFNULL與IN操作

編輯:關於MYSQL數據庫

       Mysql IFNULL操作

      項目中用到的,當SQL查詢某個字段為空的時候,查詢結果中設置其值為默認值。最笨的方法當然是對查詢結果進行處理了,遍歷查詢結果,當為空的時候,設置其值:

     代碼如下  

    $len=count($result);
    for($i=0;$i<$len ;$i++){
        $var = $result[$i]['name'];
     if(!$var){
      $result[$i]['name']='default_name';
     }
    }

      如上辦法,不僅費時,還??隆H绻?茉?ql語句中直接解決多好啊。

      SQL中有ISNULL方法,介紹如下:

      ISNULL

      使用指定的替換值替換 NULL。

      語法

      ISNULL ( check_expression , replacement_value )

      參數

      check_expression

      將被檢查是否為 NULL的表達式。check_expression 可以是任何類型的。

      replacement_value

      在 check_expression 為 NULL時將返回的表達式。replacement_value 必須與 check_expresssion 具有相同的類型。

      但在Mysql中,isnull只是用來判斷是否為空,不能實現替換功能,照上面寫的話,會直接報錯(Incorrect parameter count in the call to native function 'isnull' Errornumber:1582 )。

      那麼Mysql中如何實現SQL中的ISNULL方法呢?

      IFNULL( check_expression , replacement_value ),實現了SQL中的ISNULL方法。

      見下sql語句

     代碼如下  

    mysql> SELECT IFNULL(1,0);
    +-------------+
    | IFNULL(1,0) |
    +-------------+
    |           1 |
    +-------------+
    1 row in set

      由於 expr1 是 1,不為 NULL,所以函數返回 1. 我們可以再試下,如果讓 expr1 為 NULL,是否能返回第二個參數呢? 不妨讓 expr1 = 1/0, 由於除數為0,結果就為 NULL 了。

     代碼如下  

    mysql> SELECT IFNULL(1/0,'NowaMagic');
    +-------------------------+
    | IFNULL(1/0,'NowaMagic') |
    +-------------------------+
    | www.111cn.net               |
    +-------------------------+
    1 row in set

      前面的參數為 NULL,就返回第二個參數 www.111cn.net 了。

      這個函數不難理解,為什麼要介紹這個函數呢?這是為了後面講述 MySQL 下的高級黑客技術做的基礎知識准備,你可以先試著理解這麼一句 hack SQL

     代碼如下  

    UPDATE table SET views = '1' WHERE id = -2441 OR (ORD(MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM nowamagic.`tb2` ORDER BY id LIMIT 1,1),2,1))>112)#

      Mysql的IN操作

      見如下SQL語句

     代碼如下  

    select product
    from ProductParameter
    where val = 19116 OR val = 19127 OR val = 19128 OR val = 19119

      OR了很多是不是覺得很繁瑣呀?用IN就解決了:

     代碼如下  

    select product
    from ProductParameter
    where val in (19116, 19127, 19128, 19119))

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