mysql-【null、0、空字符串】区别
创建表tb_test
CREATE TABLE `tb_test` (
`name` varchar(255) DEFAULT NULL,
`value` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插⼊⼏条数据
INSERT INTO tb_test VALUES
('null',NULL),
('empty',''),
('0','0'),
('1','1'),
('2','2');
问题:查询出value字段为null,空字符串,字符串'0'和特定值'1'
--MySQL数据库版本
SELECT version() 5.6.21-log
SELECT@@version 5.6.21-log
--
SELECT*FROM tb_test WHERE `value`=1or ISNULL(`value` or `value`=null); --null,empty,0,1
SELECT*FROM tb_test WHERE `value`='1'or ISNULL(`value` or `value`=null);--null,empty,0,1
SELECT*FROM tb_test WHERE `value`=1;--1
SELECT*FROM tb_test WHERE `value`='1';--1
SELECT*FROM tb_test WHERE ISNULL(`value` or `value`=null); --null,empty,0
SELECT*FROM tb_test WHERE ISNULL(`value`); --null
SELECT*FROM tb_test WHERE ISNULL(`value`=null); --null,empty,0,1,2
SELECT*FROM tb_test WHERE `value`=NULL; --这种⽅式获取到⼀条记录,所有字段都为null
SELECT'0'=NULL; --null
SELECT'1'=NULL; --null
SELECT''=NULL; --null
SELECT0=NULL; --null
空值是指零长度的字符串SELECT1=NULL; --null
SELECT NULL=NULL; --null
SELECT (NULL or NULL=NULL); --null
SELECT (''or''=NULL); --null
SELECT ('0'or'0'=NULL); --null
SELECT ('1'or'1'=NULL); --1
SELECT ('2'or'2'=NULL); --1
总结:=,!=不能⽤来判断⼀个字段是否为空,应该⽤ISNULL()
任何值使⽤=与NULL⽐较返回的都是NULL
null、空字符串、字符串0、数字0与null进⾏or运算返回null
上述问题使⽤符合表达式ISNULL(`value` or `value`=null)可以分解为
value='0'or value=''or ISNULL(value)
⽰例: u.age = '' or ISNULL(TRIM(u.age))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论