sql判断null Oracle,sql server

 百家乐-数据     |      2020-04-07 23:56

sql server

替换null:isnull(arg,value)

如:select isnull(price,0.0) from orders ,如果price为null的话,用0.0替换

与null比较: is not null,is null

如 select * from orders where price is null ,price等于null

如: select * from orders where price is not null ,price不等于null

oracle

替换null: nvl(arg,value)

如: select nvl(price,0.0) form orders

与null比较: is not null,is null

如 select * from orders where price is null ,price等于null

如: select * from orders where price is not null ,price不等于null

oracle

那是四个时时被问到的主题素材。特别是顾客在此以前使用的是oracle,那么她在应用sql server的时候会有五个问号,就是在拍卖null值下边,sql server与oracle的行为分裂

在oracle中,null值会认为是贰个无穷大的值,所以假若依据升序排列的话,则会被排在最终边

在sql server中则刚刚相反,null值会被以为是一个Infiniti小的值,所以一旦依据升序排列的话,则会被排在最前方

select [id] from [demo].[dbo].[orders] order by id

则会看出如下的作用

那正是说,有未有哪些点子让sql server的那个默许机制与oracle同样啊?答案是:没有

但大家能够想某个调换的办法,举个例子能够像上面那样写代码

select [id]

from [demo].[dbo].[orders] order by case when id is null then 1 else 0 end

这样的话,即可以看看到如下的机能

倘使该列有成立索引,那么能够看看如下的推行计划