sql判断null Oracle,sql server

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值会被认为是叁个无止境小的值,所以即使依照升序排列的话,则会被排在最前方

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

那样的话,就足以见到如下的效能

设若该列有开创索引,那么能够观察如下的举行安插

发表评论

电子邮件地址不会被公开。 必填项已用*标注