MySQL 的IFNULL()、ISNULL()和NULLIF()函数

原创 2016年07月31日 21:27:22

前言

    最近小编在做一个抽奖活动的程序,然后大量的查询扑面而来,那我们就顺势来把mysql再全面学习一下吧!

实例

在使用left join等联表查询时,常遇到某些字段为null,一般都在后台语言使用if (a==null) 判断做处理,其实MySQL本身也有一个IFNULL函数可以处理。同时我们也来说说ISNULL()和NULLIF()函数。

分享

一、IFNULL(expr1,expr2)用法

    假如expr1不为NULL,则 IFNULL() 的返回值为expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
      mysql>   SELECT   IFNULL(1,0);   
                            ->   1   
      mysql>   SELECT   IFNULL(NULL,10);   
                            ->   10   
      mysql>   SELECT   IFNULL(1/0,10);   
                            ->   10   
      mysql>   SELECT   IFNULL(1/0,'yes');   
                            ->   'yes'  
      IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、REAL或 INTEGER。

项目中具体代码

  public static List<ta_activity_info> ChooseByActivityID(string ActivityID)
      {
          string strSql = @"SELECT DISTINCT
	@ActivityID as ActivityID,
   IFNULL(ta_choujiang.CreateTime,(SELECT ta_activity_info.CreateTime from ta_activity_info where ta_activity_info.ActivityID=@ActivityID))as CreateTime,
	(
		SELECT
			count(*)
		FROM
			ta_choujiang
		WHERE
			ta_choujiang.ActivityID = @ActivityID
	) AS PeopleSum,
	(
		SELECT
			count(*)
		FROM
			ta_wininfo
		WHERE
			ta_wininfo.ActivityID = @ActivityID
	) AS zhongjiangPeople,
	(
		SELECT
			(
				(
					SELECT
						count(*)
					FROM
						ta_choujiang
					WHERE
						ta_choujiang.ActivityID = @ActivityID
				) - (
					SELECT
						count(*)
					FROM
						ta_wininfo
					WHERE
						ta_wininfo.ActivityID =@ActivityID
				)
			)
	) AS weizhongjiangPeople
FROM
	ta_activity_info
LEFT JOIN ta_choujiang ON ta_activity_info.ActivityID = ta_activity_info.ActivityID
and ta_choujiang.ActivityID =@ActivityID";

          //参数赋值
          MySqlParameter[] param =
                       {
                          new MySqlParameter("@ActivityID", MySqlDbType.VarChar)
                       };
          param[0].Value = ActivityID.ToString();
          //return GetList2<ta_rewardinfo>(strSql, param);
          List<ta_activity_info> List = GetListV3<ta_activity_info>(strSql, param);
          return List;
      }

二、ISNULL(expr) 的用法

    如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。 
    mysql> select isnull(1+1);
                       -> 0
    mysql> select isnull(1/0);
                       -> 1
    使用= 的null 值对比通常是错误的。

三、NULLIF(expr1,expr2)用法

    如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1。这和CASE  WHEN expr1 = expr2 THEN NULL ELSE   expr1 END相同。     
    mysql>   SELECT NULLIF(1,1);   
                     ->   NULL   
mysql>   SELECT   NULLIF(1,2);   
                     ->   1  
    如果参数不相等,则 MySQL 两次求得的值为 expr1。

总结

      解决问题不是我们的主要目的,虽然问题在眼前是一个着急的事情,但是解决了之后我们主要的是把相关的只是掌握了……加油!!

    

版权声明:本文为博主原创文章,未经博主允许不得转载。

MySql 里的IFNULL用法

IFNULL(expr1,expr2)的用法:假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为expr2。IFNULL()的返回值...
  • a466350665
  • a466350665
  • 2016年11月01日 12:30
  • 10933

MySQL IFNULL()函数用法MySQL

Chapter: MySQL常用自带函数 1. MySQL IFNULL()函数用法 2. MySQL MID()函数用法 3. MySQL ORD()函数用法 ...
  • stary1
  • stary1
  • 2016年11月18日 11:21
  • 6340

【MySQL函数】MYSQL IFNULL和IF函数的使用

下文对MYSQL IFNULL函数的使用进行了详细的叙述,供您参考学习,如果您在MYSQL IFNULL函数使用方面遇到过类似的问题,不妨一看。 MYSQL IFNULL(expr1,expr2) ...
  • fu_zk
  • fu_zk
  • 2013年11月02日 17:30
  • 12543

Mysql中类似于oracle中nvl()函数的ifnull()函数

IFNULL(expr1,expr2)  如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。  my...
  • qq_22642239
  • qq_22642239
  • 2016年10月12日 15:03
  • 9278

mysql中IFNULL()和COALESCE()函数替代null

在mysql中isnull()函数不能作为替代null值! 如下: 首先有个名字为business的表: SELECT ISNULL(business_name,'no business_nam...
  • u014231523
  • u014231523
  • 2015年09月10日 11:41
  • 6223

MySql 里的IFNULL、NULLIF和ISNULL

mysql中isnull,ifnull,nullif的用法如下: 一.IFNULL(expr1,expr2)的用法:假如expr1   不为  NULL,则   IFNULL()   的返回值为...
  • er_shao_ye
  • er_shao_ye
  • 2016年03月24日 09:41
  • 122

MySQL IFNULL()函数用法

服务器君一共花费 22.578 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。 Chapter: MySQL常用自带函数 1. MySQL IF...
  • linshichen
  • linshichen
  • 2016年09月30日 11:30
  • 471

MySql 里的IFNULL、NULLIF和ISNULL用法区别

mysql中isnull,ifnull,nullif的用法如下: isnull(expr) 的用法: 如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。  my...
  • xyw591238
  • xyw591238
  • 2016年07月20日 09:10
  • 2377

mysql的IFNULL函数什么意思?

今天看代码无意中发现了SQL中有个IFNULL的函数,于是我查了一下,原来是这么个意思 IFNULL(A,B)  如果A是空的那么IFNULL的结果就是B,反之A不为空那么IFNULL的结果...
  • duanjw1988
  • duanjw1988
  • 2016年11月18日 09:40
  • 560

MYSQL IFNULL函数的使用

MYSQL IFNULL(expr1,expr2)           如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决...
  • dreamboycx
  • dreamboycx
  • 2013年09月27日 17:36
  • 889
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL 的IFNULL()、ISNULL()和NULLIF()函数
举报原因:
原因补充:

(最多只允许输入30个字)