萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Mysql中IFNULL與IN操作

Mysql中IFNULL與IN操作

在mysql中ifnull就是判斷null值的字段了,而in就是一個包含的意思就是X裡面是不是包括了Y,下面我們一起來看幾個實例吧。

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))

copyright © 萬盛學電腦網 all rights reserved