首页
学习
活动
专区
工具
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,所以出现查询结果和实际不匹配的情况

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

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.6K10

MySQL NULL和空的区别?

01 小木的故事 作为后台开发,在日常工作如果要接触Mysql数据库,那么不可避免会遇到MysqlNULL和空。那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别。...---- 面试官:你有用过MySQL吗? 小木:有! 面试官:那你能大概说一下Mysql NULL和空的区别吗?...1、空不占空间,NULL占空间。当字段不为NULL时,也可以插入空。...2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段没有不为NULL的或者为 NULL 的,不能查出空。...3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数可以使用IFNULL()函数来进行处理,判断空字符用 =’‘或者’’来进行处理。

2.5K10

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()函数仅仅是用于判断的,接受一个参数并返回一个布尔,不提供当值为空的时候将返回替换成另一个的第二参数。...简单介绍 IFNULL()函数是MySQL内置的控制流函数之一,它接受两个参数,第一个参数是要判断的字段或(傻?),第二个字段是当第一个参数是空的情况下要替换返回的另一个。...函数的语法 IFNULL(v1, v2) 其中,如果v1不为NULL,则IFNULL函数返回v1; 否则返回v2的结果。...SELECT IFNULL('i like yanggb', 'i do like yanggb'); // i like yanggb 在上面的例子,由于第一个参数不为NULL,所以返回的是第一个参数的

9.8K10

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.7K30
领券