Home  >  Article  >  Database  >  Mysql中IFNULL与IN操作

Mysql中IFNULL与IN操作

WBOY
WBOYOriginal
2016-06-07 16:18:291505browse

Mysql IFNULL操作 项目中用到的,当SQL查询某个字段为空的时候,查询结果中设置其值为默认值。最笨的方法当然是对查询结果进行处理了,遍历查询结果,当为空的时候,设置其值: 代码如下 $len=count($result); for($i=0;$i$len ;$i++){ $var = $result[$i]['

   Mysql IFNULL操作

  项目中用到的,当SQL查询某个字段为空的时候,,查询结果中设置其值为默认值。最笨的方法当然是对查询结果进行处理了,遍历查询结果,当为空的时候,设置其值:

 代码如下  

$len=count($result);
for($i=0;$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') |
+-------------------------+
|                |
+-------------------------+
1 row in set

  前面的参数为 NULL,就返回第二个参数 了。

  这个函数不难理解,为什么要介绍这个函数呢?这是为了后面讲述 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))

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn