sqlserver、oracle数据库排序空值null问题解决办法

转:https://www.cnblogs.com/pacer/archive/2010/03/02/1676371.html

【sqlserver】:

sqlserver 认为 null 最小。

升序排列:null 值默认排在最前。

要想排后面,则:order by case when col is null then 1 else 0 end ,col

降序排列:null 值默认排在最后。

要想排在前面,则:order   by case when col is null then 0 else 1 end , col desc

【oracle】:

oracle认为 null 最大。

升序排列,默认情况下,null值排后面。

降序排序,默认情况下,null值排前面。

有几种办法改变这种情况:

(1)用 nvl 函数或decode 函数 将null转换为一特定值

(2)用case语法将null转换为一特定值(oracle9i以后版本支持。和sqlserver类似):
order by (case mycol when null then ’北京漂客’     else   mycol   end)

(3)使用nulls first 或者nulls last 语法。

这是oracle专门用来null值排序的语法。

nulls first :将null排在最前面。如:select * from mytb order by mycol nulls first

null last :将null排在最后面。如:select * from mytb order by mycol nulls last

原文地址:https://www.cnblogs.com/linvan/p/9625530.html

时间: 2024-10-14 10:16:11

sqlserver、oracle数据库排序空值null问题解决办法的相关文章

常见Oracle数据库问题总结及解决办法(一)

开发中常使用Oralce数据库,使用中也许会碰到形形色色的各类错误提示,如:ORA-00933:SQL命令未正确结束.ORA-009242等等,为此记录积累对于自己来说还是很有帮助的,今天就记录以前出现过的一些问题,后面会慢慢补充完善. 错误提示:ORA-00942:表或视图不存在 图1-1 图1-2 开发过程中使用PowerDesigner设计数据库并导出脚本,在执行脚本是出现上图出现的问题,为此打开PowerDesigner查看设计的表,发现表名被""引了起来(图1-2),果不其然

Hibernate 配置连接MySQL/SQLServer/Oracle数据库

用Hibernate配置连接数据库可以方便我们对POJO的操作,节省了很多时间和代码.下面就分别说明连接不同数据库需要在hibernate.cfg.xml做的配置. 需要数据库驱动包可以点击这里下载:数据库Jar包下载地址:http://pan.baidu.com/s/1jGKEEY6  密码:okq0 1.Hibernate连接MySQL数据库 1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configur

Java jdbc访问sqlserver,oracle数据库

1.JDBC访问Oracle数据库 1 public class Jdbc_Oracle { 2 3 // 静态代码块,只会执行一次,类似C#静态构造方法 4 static { 5 try { 6 // 加载数据库驱动一次 7 Class.forName("oracle.jdbc.driver.OracleDriver"); 8 } catch (ClassNotFoundException e) { 9 e.printStackTrace(); 10 } 11 } 12 13 //m

数据库允许空值(null),往往是悲剧的开始(1分钟系列)

数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊. 数据准备: create table user ( id int, name varchar(20), index(id) )engine=innodb;   insert into user values(1,'shenjian'); insert into user values(2,'zhangsan'); insert into user values(3,'lisi'); 说明: id为索引,非唯一(non un

数据库允许空值(null),往往是悲剧的开始

原文: 58沈剑   架构师之路   https://mp.weixin.qq.com/s/XRSPITgWWK-2Ee-cSIqw1w 数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊. 数据准备: create table user ( id int, name varchar(20), index(id) )engine=innodb; insert into user values(1,'shenjian'); insert into user values(2,'

Oracle数据库:ORA-54013错误解决办法

ORA-54013: 不允许对虚拟列执行 INSERT 操作 这是Oracle 11 的新特性 -- 虚拟列. 在以前的Oracle 版本,当我们需要使用表达式或者一些计算公式时,我们会创建数据库视图,如果我们需要在这个视图上使用索引,我们会创建基于函数的索引.现在Oracle 11允许我们直接在表上使用虚拟列来存储表达式.虚拟列的值是不存储在磁盘的,它们是在查询时根据定义的表达式临时计算的.我们不能往虚拟列中插入数据,我们也不能隐式的添加数据到虚拟列,我们只能使用物理列来插入数据.然后可以查询

Cmd下操纵sqlserver/oracle数据库的基本命令

Cmd下操纵sql server数据库的基本命令:1.(1)先进入命令sql命令行,登录数据库登录本地数据库系统sqlcmd -U [username] -P [password] (3)查询所有数据库名称select name from SysDatabases(4)操纵数据库use [DataBaseName]go(5)显示该数据库下所有表名称select name from sysobjects where type='U'go(6)显示数据表的所有字段Select Name from S

数据库中文显示乱码问题解决办法

Ubuntu 14.04    mysql 5.5  python 2.7 从网页爬取数据存入数据库显示乱码 以root权限登录 修改mysql配置文件 /etc/init.d/my.cnf 找到[client]在下面加入 default-character-set=utf8 找到 [mysqld_safe]在下面加入 default-character-set=utf8 找到[mysqld]在下面加入 default-character-set=utf8 init_connect='SET N

SSH或者SSM开发web,mysql数据库,数据库配置文件配置不当~数据库读写数据乱码问题解决办法。

相信,大家都有遇到过在传入一个中文string,debug自己的每一行代码时,都发现始终是没有乱码的(即:排除了,源码文件的编码格式是没问题的),但是数据进入数据库之后就是乱掉了. 那么很明显问题就出现在数据写入数据库的过程之中了(数据库设置的编码格式也是对的情况下).要是你SSH框架或者SSM框架开发,那么就要看 看数据库配置文和您的项目里的其他使用到数据库的连接的代码是否是如下这样写的,如果不是按照如下修改即可.当然出现乱码的原因的有很多,此法不行,还是 看看其他方法好了~