mysqlwhere空_Mysql设置查询条件(where)查询字段为
NULL
在SQL中,NULL值在于任何其他值甚⾄NULL值⽐较时总是假的(FALSE)。包含NULL的⼀个表达式总是产⽣⼀个NULL值,除⾮在包含在表达式中的和函数的⽂档中指出。mysql中 新建字段默认值为null,那么要查询此数据的字段时应该怎么操作呢?
在mysql中,查询某字段为空时,不可⽤ = null,⽽是 is null,不为空则是 is not null。
具体格式如下:select * from [table name] where [column name] is null;
select * from [table name] where [column name] is not null;select * from [table name] where [column name]=null;
select * from [table name] where length([column name])=0;
举例说明如下:
1)有⼀个字段blist,如果查询where blist <> 'B'时为什么那些blist为NULL的记录查不出?怎么写才能查出NULL值记录?
回答:
Null 值不能使⽤普通的算术运算符来⽐较,对这些它什么都不返回。
只能靠你⾃⼰的逻辑流程,在查询语句中再添加where blist<>'B' or blist is null;
2)在下列例⼦,所有的列返回NULL:
如果你想要寻值是NULL的列,你不能使⽤=NULL测试。下列语句不返回任何⾏,因为对任何表达式,expr = NULL是假的:mysql> SELECT * FROM my_table WHERE phone = NULL;
mysql操作官方文档要想寻NULL值,你必须使⽤IS NULL测试。下例显⽰如何出NULL电话号码和空的电话号码:mysql> SELECT * FROM my_table WHERE phone IS NULL;
mysql> SELECT * FROM my_table WHERE phone = "";
为了有助于NULL的处理,你能使⽤IS NULL和IS NOT NULL运算符和IFNULL()函数。
3) 出现null值的情况,⼀般是在多表联合查询的时候。⽐如有⼀个⽂章表和⼀个评论表,评论表的外键是⽂章表的主键id。设想我们的需求是实现带评论总数的⽂章列表时,⽆评论的⽂章,统计的评论总是将是null值。
例:select a.*,b.num as num from article as a left join (select count(*) as num,article_id from article_reply group by article_id) as b on a.id=b.article_id;
b.num将是null值。
怎样将null值转换为零呢。
有两种⽅式:
(1)在view层判断,如果是null值就输出零。这种⽅法感觉太不舒服,这⾥不介绍,也不推荐。
(2)在sql层级处理,view层⽆需做任何的处理。
例:select a.*,ifnull(b.num,0) as num from article as a left join (select count(*) as num,article_id from article_reply group by article_id) as b on a.id=b.article_id;
上列中的0就是默认值,当然你也可以赋其它默认值。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论