首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL的case when对于NULL判断的小坑

今天在开发程序,从MySQL中提取数据的时候,使用到了case when的语法用来做判断,在使用过程判断NULL的时候遇到个小问题; 具体的现象测试如下: 表结构如下: CREATE TABLE...null,''),(null,null); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 表数据...NULL,输出不同的,用TEST替换空字符,用PROD替换NULL SQL语句如下: mysql>>SELECT -> id, -> CASE name ->...| +----+------+ 3 rows in set (0.00 sec) 发现这个结果是有问题的,理想的结果第3条记录为3 PROD ,但是却为空,说明这个判断null条件有问题; Mysql...主要是将第一种语法与第二种语法混用导致的,case 后面的case_value 的有两种:真实或者为null,而 when 后面的条件也有两个:true或者false,所以出现查询结果和实际不匹配的情况

3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL NULL特性

    NULL是一种“没有类型”的,通常表示“无”,“未知”,“缺失”,“超界”,“不在其中”等,我们在日常运用很容易和NULL字符串混淆,这里大致整理了下NULL的一些特性,以便能够正确使用NULL...2)NULL字符串可以当作普通字符串进行处理,而NULL判断只有is null和 is not null,见第5点 3,插入数据时若不指定,如果没其它默认,会用默认NULL 4,当插入大写...NULL字符时,就很难区别NULLNULL还是NULL字符串了,这时需要用到NULL判断NULL判断只有is NULL和is not NULL 通过肉眼很难区别,这里通过NULL判断...7,和NULL的逻辑运算,is NULL运算只有null is null为真返回数字1,is not NULL运算只有 null is not null为假返回数字0 8,MySQL会把单独的...NULL 11,NULL会被count(字段)函数过滤,但是在count(*)不会被过滤 12,在group by函数NULL会当作同一个放在最最小前 13,其他一些函数如果有NULL

    2.7K10

    MySQL NULL和空的区别?

    01 小木的故事 作为后台开发,在日常工作如果要接触Mysql数据库,那么不可避免会遇到MysqlNULL和空。那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别。...---- 面试官:你有用过MySQL吗? 小木:有! 面试官:那你能大概说一下Mysql NULL和空的区别吗?...02 NULL和空 NULL也就是在字段存储NULL,空也就是字段存储空字符(’’)。...3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数可以使用IFNULL()函数来进行处理,判断空字符用 =’‘或者’’来进行处理。...4、在进行count()统计某列的记录数的时候,如果采用的NULL,会别系统自动忽略掉,但是空是会进行统计到其中的。 5、MySql如果某一列中含有NULL,那么包含该列的索引就无效了。

    2.6K10

    PHP 类型判断NULL,空检查

    PHP是一种宽松类型的编程语言,在函数对传入的参数值的“类型”以及”是否为空或者NULL“进行检查是不可缺少的步骤。...变量/常量是否定义或初始化 在PHP,变量在定义以后不需要进行初始化,它会被初始化为具有其类型的默认,但是不推荐这么做,一般情况下最好是对变量进行显示初始化。...判断变量是否为NULL 在PHP判断一个变量是否NULL有很多方式: is_null VS isset 这两个函数都可以来判断一个变量是否为NULL,它们对空字符串,0,false的认同是一样的...但是从语义上来说,一个变量”是否已显示初始化“和”是否为NULL“是不同的概念,在某些场景下使用isset是不合适的,比如检查一个函数的返回是否为NULL。...因此综上述,判断一个变量是否为NULL最好的办法就是直接使用"===",这样就不用在is_null,isset之间犹豫。其实上述的结论也同理于False的判断

    3.4K20

    MySQL的ifnull()函数判断

    比如说判断的函数,在Oracle是NVL()函数、NVL2()函数,在SQL Server是ISNULL()函数,这些函数都包含了当值为空的时候将返回替换成另一个的第二参数。...但是在MySQL,ISNULL()函数仅仅是用于判断的,接受一个参数并返回一个布尔,不提供当值为空的时候将返回替换成另一个的第二参数。...SELECT ISNULL('i like yanggb'); // 0 SELECT ISNULL(NULL); // 1 因此MySQL另外提供了一个IFNULL()函数。...简单介绍 IFNULL()函数是MySQL内置的控制流函数之一,它接受两个参数,第一个参数是要判断的字段或(傻?),第二个字段是当第一个参数是空的情况下要替换返回的另一个。...简单示例 SELECT IFNULL(NULL, 'i like yanggb'); // i like yanggb 在上面的例子,由于第一个参数为NULL,所以返回的是第二个参数的

    9.8K10

    C#烦人的Null判断竟然这样就被消灭了

    Null检查应该算是开发中最常见且烦人的工作了吧,有人反对吗?反对的话请右上角关门不送。这篇文章就教大家一招来简化这个烦人又不可避免的工作。...罗嗦话不多说,先看下面一段简单的不能再简单的null判断代码: public void DoSomething(string message) { if(message == null)...关注我的朋友,应该看过我上篇《一个小技巧助您减少if语句的状态判断》的文章,它也是简化Null判断的一种方式。...But nothing happend at runtime. } 自定义解决方案 这里我们将去掉用于Null检查的if语句。如何处理csharp中方法参数的赋值?答案是你不能!....DoSomething(null); // Throws ArgumentNullException at runtime.

    1.2K30

    软件测试|SQLnull,该如何理解?

    图片深入理解SQLNull:处理缺失数据的重要概念简介Null在SQL是用于表示缺失或未知数据的特殊。...本文将深入探讨Null的概念、处理方法和注意事项,以帮助读者更好地理解和处理SQL的缺失数据。在SQL数据库Null是一种特殊的,用于表示缺失或未知的数据。...它与其他具体的数值、字符串或日期不同,Null表示该字段在特定记录没有有效。下面我们将深入探讨Null的重要性、处理方法和注意事项。Null的重要性:Null在数据库具有重要的作用。...Null使数据库能够处理现实世界的不完整信息,避免在未知情况下做出错误的假设。同时,Null也可以帮助区分空字符串、零和未定义之间的差异。...外键约束:在使用外键约束时,需要注意与Null相关的引用完整性。当父表的主键值为Null时,应确保在子表可以处理或限制Null的引用。

    22520

    SQLNull处理

    在日常的开发,遇到需要处理 Null 的场景还是蛮常见的。比如,查询某个字段包含 Null 的记录、在展示的时候将 Null 转为其它、聚合包含 Null 的列等。...今天就和大家聊聊在 MySQL 处理 Null 时需要注意的点,本文包含以下内容: 查找 Null Null 转为实际 在排序Null 的处理 计算非 Null 的数量 聚合...在 MySQL 还可以使用 IFNULL(comm,0),或者 case when。...3 处理排序Null 如果是使用默认的升序对包含有 Null 的列做排序,有 Null 的记录会排在前面,而使用了降序排序,包含了 Null 的记录才会排在后面。...通常的做法是先将列Null 转为 0,再做聚合操作。

    2.8K30

    删除列NULL

    图 2 输出的结果 先来分析图 1 是怎么变成图 2,图1 的 tag1、tag2、tag3 三个字段都存在 NULL ,且NULL无处不在,而图2 里面的NULL只出现在这几个字段的末尾。...这个就类似于 Excel 里面的操作,把 NULL 所在的单元格删了,下方的单元格往上移,如果下方单元格的仍是 NULL,则继续往下找,直到找到了非 NULL 来补全这个单元格的内容。...有一个思路:把每一列去掉 NULL 后单独拎出来作为一张独立的表,这个表只有两个字段,一个是序号,另一个是去 NULL 后的。...NULL AS tag2, 'ccc5' AS tag3), # 去 NULL ,列转行 t2 AS (SELECT tag1 AS tag, 'tag1' AS col,...,目的是维持同一列的相对顺序不变。

    9.8K30

    MySQLIS NULL、IS NOT NULL、!=不能用索引?胡扯!

    NULL是怎么在记录存储的 在MySQL,每一条记录都有它固定的格式,我们以InnoDB存储引擎的Compact行格式为例,来看一下NULL是怎样存储的。..., c3 CHAR(10), c4 VARCHAR(10) ) CHARSET=ascii ROW_FORMAT=COMPACT; 因为我们的重点是NULL如何存储在记录的...也就是说他们把SQLNULL认为是列中最小的。...当然,关于如何定量的计算使用某个索引执行查询的成本比较复杂,我们在小册花了很大的篇幅来唠叨了。不过因为篇幅有限,我们在这里只准备定性的分析一下。...不信谣,不传谣 大家可以看到,MySQL决定使不使用某个索引执行查询的依据很简单:就是成本够不够小。而不是是否在WHERE子句中用了IS NULL、IS NOT NULL、!=这些条件。

    4.4K30
    领券