做了一道题,要求返回排名第二的取出来,若没有则必须返回NULL,且指定列名c
上一篇记录里我写了方法,但是这个返回null,是个大坑啊
比如:
表b
id | a |
---|---|
1 | 0.2 |
2 | 0.5 |
a=1的记录不存在,以下查询返回结果必然为null,
select a from b where a =1
它显示如下:
null
那么结果就是为空表啊,就是null啊,可是怎么把这个null显示出来!
实际工作中,可能这个操作没什么意义!但这是个问题~
若这么操作则可解决:
select null as c
它显示如下:
-
c 0 null
若把null换成select语句即可,
注意此方法只适合唯一值的情况!
同时部分函数的返回值也不一样:
max、min、max在没有记录时会返回null值
而ifnull则返回空值,而不是null值,是不是很奇怪!
而count则返回0,还能不能统一了?
“is not null “ 和 “!=null”
在筛选非空的字段经常会用到”is not null”和”!=null”,但是这两种方法是不一样的!!!!Why?????而”null” 表示什么也不是, 用“=、>、< …” 所有的判断,结果都是false,所有只能用 is null进行判断。
默认情况下,推荐使用 IS NOT NULL去判断,因为SQL默认情况下对。”!= Null”的判断会永远返回0行,但没有语法错误。
如果你一定想要使用”!= Null”来判断,需要加上这个语句:“set ANSI_NULLS off”这时你会发现“IS NOT NULL” 和 “!= null” 是等效的。