hahajava

mysql - 【 NULL 值处理】

  

 

 coalesce( sum(score), 0) :    返回第一个不为NULL的参数,如果所有参数都为NULL,此函数返回NULL;当它使用2个参数时,和IFNULL函数作用相同。

ifnull(u.name,\'\')

if( isnull(t2.name), 0, t2.name) as stu_name


mysql 不推荐使用 (is not null) 和 (not in 进行 子查询),以及它们的替代查询方法

mysql 的查询中,如果使用 (not in 进行 子查询) 或者  (is not null) 后,会让查询速度变得很慢,笔者十分不建议使用。下面有笔者总结的代替方法。

代替  (not in 进行 子查询 ):将子查询 转变为 表连接,相关的逻辑写在 表连接 的关系上

代替  (is not null):将 is not null  的字段,使用 ifnull()替换为其他值,然后 ifnull()!=其他值,就能进行筛选了

 

示例(https://blog.csdn.net/YABIGNSHI/article/details/102937435):

  IFNULL(zla.serialNum,\'kong\' )!=\'kong\'

在测试环境试验,执行时间从1分钟47秒降为了0.4秒,效果杠杠的。

完整示例:

  

where  (s.supplier_id != \'\' and IFNULL(s.supplier_id,\'label\' ) != \'label\') and ...

 

 

    https://www.cnblogs.com/wuyun-blog/p/10179832.html 

Mysql查询is null,is not null,!=使用或索引

    https://www.jianshu.com/p/73cd91ee1f71  :    由图可知,is null, is not null, !=查询, 是可以使用索引的。这和mysql的查询优化有关。不要轻易被网上的一些文章误导。

 

MySQL中is not null和!=null和<>null的区别
2018.08.07 10:09 4276浏览
在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如果去运行一下试试的话差别会很大!
为什么会出现这种情况呢?
null 表示什么也不是, 不能=>< … 所有的判断,结果都是false,所有只能用 is null进行判断。
默认情况下,推荐使用 IS NOT NULL去判断,因为SQL默认情况下对!= Null的判断会永远返回0行,但没有语法错误。
如果你一定想要使用!= Null来判断,需要加上这个语句:
set ANSI_NULLS off
这时你会发现IS NOT NULL!= null 是等效的
一个字段如果设为“NULL”,表示如果这个字段的值为空时,自动插入一个“NULL”值。
一个字段如果设为“NOT NULL”,表示如果这个字段的值为空时,不自动插入“NULL”值(任其无值)。
所以,设为“NULL”的意思反而是“不能无值”(由MYSQL自动赋“NULL”值),而设为“NOT NULL”是“可以无值”

原文来源:https://www.imooc.com/article/50826

 

分类:

技术点:

相关文章: