1.is null

//如果时null,返回0,否则返回1
select 1 is null,1 is not null; //0 ,1

不能使用>,<,<>,=来比较null,因为结果都是null
select 1=null,1<null,1>null,1<>null;  //null,null,null,null

In MySQL, 0 or NULL means false and anything else means true. The default truth value from a boolean operation is 1. 

在mysql中0,null表示false,其他都是true,默认的true值是1
0,null都是false,但是0不是null
select 0 is null,0 is not null,'' is null,'' is not null;//0,1,0,1

group by 会把null合并到一组
order by asc null 在最开始的,desc则在最后

2. null vs ''

insert into my_table(phone)values(null),('')
null 表示 phone is not know,不知道有没有phone
'' 表示 知道没有phone,因此设置phone为''

3. null+1=null concat(null,'a','b')=null,concat_ws(',',null,'a','b')=a_b

SELECT NULL, 1+NULL, CONCAT('Invisible',NULL); //null,null,null
一个包含NULL的表达式总是包含null

4. where null

where phone = null;  
因为phone=null 的结果总是null,所以结果永远是false,所以永远没有数据

results matching ""

    No results matching ""