您好,欢迎访问一九零五行业门户网

Mysql中IFNULL与IN操作_MySQL

bitscn.com
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') |
+-------------------------+
| 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))
更多详细内容请查看:http://www.111cn.net/database/mysql/57520.htm
bitscn.com
其它类似信息

推荐信息