MySQL坑货之一——null与空

博客主要介绍了MySQL和Oracle中null和空值的区别。在MySQL里,null和空值不同,null表示未知,空值表示没有;而Oracle中二者无区别。还提及了null与空值的插入语句,以及在条件判断上,Oracle和MySQL的不同处理方式。

1.与oracle的区别
在mysql里,null和‘ ’是有区别的;
在oracle里面没有区别;

2.null与空的插入
MySQL> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES (’ ');
第一个建立的是null,理解为‘未知’;第二个是空,理解为‘没有’。

3.null与空的条件判断
Oracle中null仅只能参与is null 和 is not null运算。如果使用 <> 、= 与null进行比较,都会返回false。
但在MySQL里,null与 ’ ‘是完全不同的:NULL是指没有值,而’'则表示值是存在的,只不过是个空值。

查询的时候要区别开
(1) where v is null
(2)where v = ’ ’

### MySQL 中 SUM 函数处理 NULL 值和字符串 在 MySQL 数据库中,`SUM()` 函数用于计算数值列的总和。当遇到 `NULL` 值时,`SUM()` 函数会自动跳过这些值而不将其纳入计算范围[^2]。 然而,对于字符串 (`''`) 的情况有所不同。由于字符串代表的是长度为零的有效字符序列而非缺失的数据表示形式,因此不会被当作 `NULL` 来对待,在求和操作里会被视作数值 0 进行累加运算[^4]。 为了更好地理解这一点,可以考虑如下 SQL 查询例子: 假设存在一张名为 `sales` 的销售记录表,其中有一列表示销售额 `amount` 可能含有 `NULL` 或者 `' '`(即由格组成的白串)。下面展示了一个简单的查询来说明如何利用 `IFNULL()` 和 `COALESCE()` 函数将可能存在的 `NULL` 转换成特定值以便于后续的操作: ```sql SELECT -- 将 amount 列里的 null 替换为 0 后再做 sum 计算 SUM(IFNULL(amount, 0)) AS total_sales, -- 使用 COALESCE 实现相同功能 SUM(COALESCE(amount, 0)) as coalesce_total FROM sales; ``` 上述代码片段展示了两种方法——通过内置函数 `IFNULL()` 或者更通用的标准SQL函数 `COALESCE()` ——都可以有效地把可能出现的 `NULL` 映射成实际可参数学运算的具体数值,从而确保最终得出正确的汇总金额[^1]。 值得注意的是,如果希望进一步区分真正的零元交易和其他类型的异常输入,则可以在应用层面上采取额外措施验证数据质量;而在数据库层面也可以设置合理的约束条件防止无效数据进入系统。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值