首页 新闻 会员 周边

Oracle的排序问题

0
悬赏园豆:10 [已解决问题] 解决于 2008-10-02 18:35

排序字段含NULL值,怎么排在NULL在最后?全世界的数据库都是在最前的,可以有通过数据库设置排在前面吗?

SELECT EMPLOYEEID, LASTNAME, FIRSTNAME, TITLE, TITLEOFCOURTESY, BIRTHDATE,
      HIREDATE, ADDRESS, CITY, REGION, POSTALCODE, COUNTRY, HOMEPHONE,
      EXTENSION, PHOTO, NOTES, REPORTSTO, PHOTOPATH
FROM EMPLOYEES T0
ORDER BY HIREDATE

麦舒的主页 麦舒 | 菜鸟二级 | 园豆:452
提问于:2008-10-02 17:36
< >
分享
最佳答案
0

这个问题够头疼的,推荐是不去管他,这是oracle的机制,外层的linq不应该去特意关照,因为解决此问题可能会使索引失效,同时也有可能使用者知道这是oracle并且知道在oracle中null会在最后,而你特意的处理会使结果与使用者的预期不符

解决方法:

使用nvl函数,对null值作处理

select * from 表 order by nvl(HIREDATE, TO_DATE('1900-01-01', 'yyyy-mm-dd')

当然对于不同的数据类型要有不同的默认值,比如整型用-65535,字符串用空的等,很麻烦的

Gray Zhang | 专家六级 |园豆:17610 | 2008-10-02 18:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册