• mysql教程
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • mysql 5.7下载安装配置详细教程
  • Python的MySQLdb模块安装
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • Win7 64位下mysql 下载、安装与配置图文教程
  • mysql update语句的用法详解
  • mysql 存储过程实例和基本语法
  • MySQL Workbench的下载安装与使用教程
  • mysql安装图解
  • mysql 命令大全及导入导出表结构或数据
  • mysql数据库下载安装教程和使用技巧
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • php安装完成后如何添加mysql扩展
  • MySQL 重装MySQL后, mysql服务无法启动
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • centos安装mysql,连接时'Can't connect to local MySQL server through socket '/tmp/mysql
  • MySQL索引基本知识
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • 在Linux内安装了Mysql,无法进入Mysql.
  • java将类序列化并存储到mysql(使用hibernate)
  • 怎样在linux终端输入mysql直接进入mysql?
  • Mysql索引类型:B-Tree索引介绍
  • c++中关于#include <mysql/mysql.h>的问题?
  • Mysql索引类型:Hash索引介绍及举例说明
  • mysql -u root mysql 怎么解释
  • Mysql服务器登陆,启动,停止等基本操作命令介绍(Linux/Centos环境)
  • mm.mysql那里可以下载?www.mysql.com根本下载不了。谢谢了
  •  
    当前位置:  数据库>mysql

    Mysql设置查询条件(where)查询字段为NULL

     
    分享到:
        发布时间:2013-10-1  


        本文导语:  在SQL中,NULL值在于任何其他值甚至NULL值比较时总是假的(FALSE)。包含NULL的一个表达式总是产生一个NULL值,除非在包含在表达式中的运算符和函数的文档中指出。mysql中 新建字段默认值为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;

    要想寻找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就是默认值,当然你也可以赋其它默认值。


    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:Mysql设置查询条件(where)查询字段为NULL
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号