问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 怎样查询不为空的列?

发布网友 发布时间:2022-04-07 14:23

我来回答

5个回答

热心网友 时间:2022-04-07 15:52

判断字段是否为空的条件是IS NULL、IS NOT NULL,下面的SQL查询表XXX中YYY字段非空的记录:
SELECT * FROM XXX WHERE YYY IS NOT NULL

热心网友 时间:2022-04-07 17:10

SELECT * FROM 表名 WHERE 表名.列名is not null

热心网友 时间:2022-04-07 18:45

select * from table t where t.zian is not null

热心网友 时间:2022-04-07 20:36

NULL 对外部程序来说,具体为不知道、不确切的、无法表述的值。所以在很多家公司的开发规范里都明确规定了,必须为 NOT NULL。
其实用到 NULL 的场景都可以转换为有意义的字符或者数值,一是有利用数据的易读性以及后期的易维护性;二是降低 SQL 语句的编写难度。
关于 NULL 的特性如下:
1. 参与 NULL 字段拼接的结果都为 NULL,预期的可能会有差异
预想把字段 r1 做个拼接,再插入到新的表 t3 里,结果 t3 表的记录全为 NULL,跟预期不符。
mysql> show create table t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`r1` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table t2\G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE `t2` (
`r1` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> create table t3 like t1
Query OK, 0 rows affected (0.04 sec)
mysql> insert into t3 select concat(r1,'database') from t1 limit 2;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t3;
+------+
| r1 |
+------+
| NULL |
| NULL |
+------+
2 rows in set (0.00 sec)
那正确的方法如下,对 NULL 用函数 IFNULL 特殊处理。
mysql> insert into t3 select concat(ifnull(r1,''),'database') from t1 limit 2;
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t3;
+----------+
| r1 |
+----------+
| database |
| database |
+----------+
2 rows in set (0.00 sec)
2. 对于包含 NULL 列的求 COUNT 值也不准确
t1 和 t2 的记录数是一样的,但是字段 r1 包含了 NULL,这导致结果忽略了这些值。
mysql> select count(r1) as rc from t1;
+-------+
| rc |
+-------+
| 16384 |
+-------+
1 row in set (0.01 sec)
mysql> select count(r1) as rc from t2;
+-------+
| rc |
+-------+
| 32768 |
+-------+
1 row in set (0.03 sec)
这时候我们可能想到了,正确的方法是用 NULL 相关函数处理,
mysql> select count(ifnull(r1,'')) as rc from t1;
+-------+
| rc |
+-------+
| 32768 |
+-------+
1 row in set (0.03 sec)
或者是直接用 COUNT(*) 包含了所有可能的值
mysql> select count(*) as rc from t1;
+-------+
| rc |
+-------+
| 32768 |
+-------+
1 row in set (0.02 sec)
当然了不仅仅是 COUNT,除了 NULL 相关的函数,大部分对 NULL 处理都不友好。
所以其实从上面两点来看,NULL 的处理都得特殊处理,额外增加了编写 SQL 的难度。
3. 包含 NULL 的索引列
对包含 NULL 列建立索引,比不包含的 NULL 的字段,要多占用一个 BIT 位来存储。
示例
key_len 分别为 43 和 42,t1 比 t2 多了一个字节,那这里可能有人要问了,不是说占了一个 BIT 位吗?那为什么多了一个字节?可以关注我上一篇文章(第02期:MySQL 数据类型的艺术 - 大对象字段)关于 BIT 的详细描述。
mysql> pager grep -i 'key_len'
PAGER set to 'grep -i 'key_len''
mysql> explain select * from t1 where r1 = ''\G

key_len: 43
1 row in set, 1 warning (0.00 sec)
mysql> explain select * from t2 where r1 = ''\G

key_len: 42
1 row in set, 1 warning (0.00 sec)
4. 各存储引擎相关的对 NULL 的处理
在 MySQL 8.0 发布后,仅有 InnoDB、MyISAM 和 Memory 支持对包含 NULL 列的索引,其他引擎不支持。比如 NDB。

热心网友 时间:2022-04-07 22:44

SELECT * FROM XXX WHERE YYY !=''
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 在家怎么做奶油。 本人在外国。 要的材料以要简单。家里能找到的材料哦。 是自己打成的 不是买来打的 梦幻西游的帐号被别人绑定了将军令怎么找回? 梦幻被别人用将军令绑了,怎么找回来 网易帐号被人增加绑定将军令怎么办 想问一下做奶油都要什么材料要怎么做呢? 怎么样解除别人绑定我账号的将军令 梦幻西游我的号被别人绑了将军令。有办法解除么? 我的帐号被绑了将军令怎么办啊? 怎么快速解绑别人绑在自己帐号上的将军令 我网易的将军令被别人的将军令替换了,我自己的将军令现在绑别的号也不能使用了 怎么办? 梦幻西游号被别人恶意绑了将军令怎么解除! 我的号被别人用将军令绑了我该怎么办? 被别人绑将军令有什么风险? 我的帐号让别人绑了将军令不知道要怎么解掉? 我的号被别人绑将军令了 能找回来吗? 哈喽顺风车取消需要提前和司机商量吗 将军令被人绑了怎么解? 取消顺风车要扣多少钱在手机微信同城旅行里约顺风车,13:50约顺风车!然后14:11分不小心取消订_百度问一问 被人用将军令恶意绑了怎么办? 小型冷水机使用注意事项 小米mix2刚才系统升级后所有的应用双开都不能用了,重启无效,设置中删除所有应用双开再重启也无效, 小米max3为什么双开软件不能同时操作,每次操作时提示该设备今日已签到请更换设备签到? 高中肄业证书能报考大学吗 原神限定角色会返场吗 原神迪卢克传说任务有后续吗 《原神》传说任务可以得角色吗? 原神潮汐任务错过还能做吗 《原神》传说任务给人物吗? 港股通额度统计口径是怎样的? 港股通当日额度余额是怎么计算的? 港股通总额度余额是怎么计算的? 建行信用卡逾期一天忘记了,影响大吗? 港股通额度统计口径是怎样的 妈妈孕育网上的产品正规吗? 妈妈网孕育的护肤品是真的吗 在妈妈网孕育买奶粉是正品吗 妈妈网孕育这个软件上卖的东西怎么样? 这个人在妈妈网孕育软件上加的,这些所谓的膏方老师靠谱吗 很多妈妈们都提到了国际妈咪,这个网上都是正品吗 年糕妈妈商城的东西是正品吗