如果您对mysqlIFNULL关键字感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于mysqlIFNULL关键字的详细内容,我们还将为您解答mysql中的ifnull的相关问
如果您对mysql IFNULL 关键字感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于mysql IFNULL 关键字的详细内容,我们还将为您解答mysql中的ifnull的相关问题,并且为您提供关于IFNULL() MySQL 与 ROLLUP、mysql IF-IFNULL 和 IF-ISNULL 同样逻辑的运行差别、mysql ifnull、MySQL IFNULL () 函数的用法的有价值信息。
本文目录一览:- mysql IFNULL 关键字(mysql中的ifnull)
- IFNULL() MySQL 与 ROLLUP
- mysql IF-IFNULL 和 IF-ISNULL 同样逻辑的运行差别
- mysql ifnull
- MySQL IFNULL () 函数的用法
mysql IFNULL 关键字(mysql中的ifnull)
select IFNULL (error_msg,0) from cron_log; 其作用:就把 error_msg 为 NULL 的值换成 0.
IFNULL() MySQL 与 ROLLUP
如何解决IFNULL() MySQL 与 ROLLUP?
我有一个 MysqL 查询。
SELECT
YEAR(Date) ''Year'',MONTH(Date)''Month'',SUM(Amount)''Amount''
FROM Bill.Statistics
LEFT JOIN Employees.Employee
ON Bill.Statistics.Employee = Employees.Employee.ID
WHERE Employees.Employee.Department LIKE ''%%''
AND Bill.Statistics.Employee LIKE ''%%''
AND Date>=''2020-10-01'' AND Date<=''2021-03-31''
GROUP BY YEAR(Date),MONTH(Date)
WITH ROLLUP
这给了我一个结果。
年份 | 月 | 数量 |
---|---|---|
2020 | 10 | 10.10 |
2020 | 11 | 11.11 |
2020 | 12 | 12.12 |
2020 | NULL | 33.33 |
2021 | 1 | 1.01 |
2021 | 2 | 2.02 |
2021 | 3 | 3.03 |
2021 | NULL | 6.06 |
NULL | NULL | 39.39 |
现在,当我尝试使用 IFNULL() 来摆脱 NULL 并在其中放置一个破折号时,我使用以下代码得到以下结果。
SELECT
IFNULL(YEAR(Date),''-'') AS ''Year'',IFNULL(MONTH(Date),''-'') AS ''Month'',MONTH(Date)
WITH ROLLUP
年份 | 月 | 数量 |
---|---|---|
2020 | 10 | 10.10 |
2020 | 11 | 11.11 |
2020 | 12 | 12.12 |
2020 | 12 | 33.33 |
2021 | 1 | 1.01 |
2021 | 2 | 2.02 |
2021 | 3 | 3.03 |
2021 | 3 | 6.06 |
2021 | 3 | 39.39 |
就像您一样,它只是将前一个值中的最后一个值复制到 NULL 所在的单元格中。
谁能告诉我为什么会这样? 我只是想让所有的 NULL 变成简单的破折号。
解决方法
据我所知,汇总行(生成那些 NULL 值 according to docs)是在选择数据“之后”生成的。我认为您应该像这样包装 SELECT:
SELECT
IFNULL(s.`Year`,''Total Year'') AS `Year`,IFNULL(s.`Month`,''Total Month'') AS `Month`,s.`Amount`
FROM
(SELECT
YEAR(Date) ''Year'',MONTH(Date) ''Month'',SUM(Amount) ''Amount''
FROM Bill.Statistics
LEFT JOIN Employees.Employee
ON Bill.Statistics.Employee = Employees.Employee.ID
WHERE Employees.Employee.Department LIKE ''%%''
AND Bill.Statistics.Employee LIKE ''%%''
AND Date>=''2020-10-01'' AND Date<=''2021-03-31''
GROUP BY YEAR(Date),MONTH(Date)
WITH ROLLUP
) AS s
mysql IF-IFNULL 和 IF-ISNULL 同样逻辑的运行差别
首先,目标记录是存在的
SELECT * FROM d_device_user_bind dub WHERE dub.`uid`=''222222222221''
其次,
SELECT dub.uid,dub.`device_id`,IF(IFNULL(dub.`device_id`,2)=2, 2, 1) isActivate FROM d_device_user_bind dub WHERE dub.del_flag=0 ORDER BY dub.`create_time` DESC LIMIT 8;
换一个语句: SELECT dub.uid,dub.`device_id`,IF (dub.`device_id` IS NULL OR dub.`device_id`='''', 2, 1) isActivate FROM d_device_user_bind dub WHERE dub.del_flag=0 ORDER BY dub.`create_time` DESC LIMIT 8;
再一个写法: SELECT dub.uid,dub.`device_id`,IF (ISNULL (dub.`device_id`), 2, 1) isActivate FROM d_device_user_bind dub WHERE dub.del_flag=0 ORDER BY dub.`create_time` DESC LIMIT 8;
不知道为什么会这样,也许是 mysql 的一个 bug 吧。
mysql ifnull
mysql内置的ifull函数可以用在查询时候为null值字段给一个默认值,例如:
select ifnull(col1, ''default-value''), col2 from test;
当test表的col1字段为NULL时,数据库返回的结果就为default-value,否则就返回本身的值。但是当col1字段的值为空字符串(”),由于空字符不是NULL,因此返回的结果还是空字符串。如果需要把空字符串或NULL值都用default-value代替,显然ifnull是不行,不过使用case when语句能搞定,示例如下:
select c1, (case when c2 = '''' or c2 is null then ''default-value'' else c2 end) from test;
原文地址:mysql ifnull, 感谢原作者分享。
MySQL IFNULL () 函数的用法

用法说明
1 |
IFNULL(expr1,expr2) |
如果 expr1 不是 NULL,IFNULL () 返回 expr1,否则它返回 expr2。
IFNULL () 返回一个数字或字符串值,取决于它被使用的上下文环境。
我们先举一些例子:
1 |
mysql> SELECT IFNULL(1,0); |
2 |
+ -------------+ |
3 |
| IFNULL(1,0) | |
4 |
+ -------------+ |
5 |
| 1 | |
6 |
+ -------------+ |
7 |
1 row in set |
-
由于 expr1 是 1,不为 NULL,所以函数返回 1. 我们可以再试下,如果让 expr1 为 NULL,是否能返回第二个参数呢? 不妨让 expr1 = 1/0, 由于除数为 0,结果就为 NULL 了。
1 |
mysql> SELECT IFNULL(1/0, ''NowaMagic'' ); |
2 |
+ -------------------------+ |
3 |
| IFNULL(1/0, ''NowaMagic'' ) | |
4 |
+ -------------------------+ |
5 |
| NowaMagic | |
6 |
+ -------------------------+ |
7 |
1 row in set |
前面的参数为 NULL,就返回第二个参数 NowaMagic 了。
我们今天的关于mysql IFNULL 关键字和mysql中的ifnull的分享已经告一段落,感谢您的关注,如果您想了解更多关于IFNULL() MySQL 与 ROLLUP、mysql IF-IFNULL 和 IF-ISNULL 同样逻辑的运行差别、mysql ifnull、MySQL IFNULL () 函数的用法的相关信息,请在本站查询。
本文标签: