`
足至迹留
  • 浏览: 485963 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

<db> order by 时sqlserver认为null是最大值

阅读更多
order by时sqlserver和oracle对null值的对待相反。

【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

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

http://blog.sina.com.cn/s/blog_69d5d7130100ubsp.html

(4)在Sql Server 中使用case when then 判断某字段是否为null,和判断是否为字符或数字时的写法不一样,如果不注意,很容易搞错

错误方法:
CASE columnName WHEN null THEN 0 ELSE columnName END

正确方法:
CASE WHEN columnName is null THEN 0 ELSE columnName END
分享到:
评论

相关推荐

    mysql5.1中文手册

    列的最大值&lt;br&gt;3.6.2. 拥有某个列的最大值的行&lt;br&gt;3.6.3. 列的最大值:按组&lt;br&gt;3.6.4. 拥有某个字段的组间最大值的行&lt;br&gt;3.6.5. 使用用户变量&lt;br&gt;3.6.6. 使用外键&lt;br&gt;3.6.7. 根据两个键搜索&lt;br&gt;3.6.8. 根据天计算...

    sqlserver存储过程

    ---创建数据库 create database CRM; --删除数据库 drop database CRM; --创建一个表 if exists(select * from sysobjects where name='... select row_number() over(order by Id) as rowId, * from Users ) temp ...

    黄淮学院2010学年第二学期SQL server期末考试

    对数据进行查询统计时,求最大值的函数是_________。 SQL Server 2000的文件包括三类: 主数据文件、_________和_________,其中_________有且只能有一个。 在T-SQL语言中,若要修改某张表的结构,应该使用的修改...

    经典SQL语句大全

    法一:select * into b from a where 1&lt;&gt;1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3...

    sql2005全文检索.doc

    SQL Server 2005全文检索技术在网站上的应用实录 http://tech.ddvip.com 2008年01月21日 社区交流 Excel服务器-用Excel做管理系统 关键字: DataGuard checkpoint 动态查询 synonyms 卸载SQL 2005 SQL Server群集 ...

    sql经典语句一部分

    法一:select * into b from a where 1&lt;&gt;1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3...

    数据库操作语句大全(sql)

    法一:select * into b from a where 1&lt;&gt;1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; ...

    程序员的SQL金典.rar

    透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握 SQL的综合应用技巧。 内容简介 本书主要介绍SQL的语法...

    程序员的SQL金典4-8

     10.7.3 ORDER BY子句  10.7.4 高级开窗函数  10.8 WITH子句与子查询 第11章 案例讲解  11.1 报表制作  11.1.1 显示制单人详细信息  11.1.2 显示销售单的详细信息  11.1.3 计算收益  11.1.4 产品销售额统计 ...

    SQL语法大全

    sql="select * from 数据表 where 字段名 like \'%字段值%\' order by 字段名 [desc]" sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 in (\'值...

    超实用sql语句

    法一:select * into b from a where 1&lt;&gt;1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3...

    经典全面的SQL语句大全

    Sql server:select top n * from 表名 order by newid() mysql select * From 表名 Order By rand() Limit n  Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, ...

    程序员的SQL金典6-8

     10.7.3 ORDER BY子句  10.7.4 高级开窗函数  10.8 WITH子句与子查询 第11章 案例讲解  11.1 报表制作  11.1.1 显示制单人详细信息  11.1.2 显示销售单的详细信息  11.1.3 计算收益  11.1.4 产品销售额统计 ...

    程序员的SQL金典7-8

     10.7.3 ORDER BY子句  10.7.4 高级开窗函数  10.8 WITH子句与子查询 第11章 案例讲解  11.1 报表制作  11.1.1 显示制单人详细信息  11.1.2 显示销售单的详细信息  11.1.3 计算收益  11.1.4 产品销售额统计 ...

    程序员的SQL金典3-8

     10.7.3 ORDER BY子句  10.7.4 高级开窗函数  10.8 WITH子句与子查询 第11章 案例讲解  11.1 报表制作  11.1.1 显示制单人详细信息  11.1.2 显示销售单的详细信息  11.1.3 计算收益  11.1.4 产品销售额统计 ...

    Oracle9i的init.ora参数中文说明

    值范围: 任何单字节字符, '+', '-', '&lt;', '&gt;' 除外。 默认值: 从 NLS_TERRITORY 中获得 nls_sort: 说明: 指定 ORDER BY 查询的比较顺序。对于二进制排序, ORDER BY 查询的比较顺序是以数值为基础的。对于语言排序, ...

    最全的oracle常用命令大全.txt

    SQL&gt;select index_name,index_type,table_name from user_indexes order by table_name; 查看索引被索引的字段 SQL&gt;select * from user_ind_columns where index_name=upper('&index_name'); 查看索引的大小 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...

    MySQL 5.1中文手冊

    3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1. 查找所有未分发的孪生项 3.7.2....

    MySQL 5.1参考手册

    3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1. 查找所有未分发的孪生项 3.7.2....

Global site tag (gtag.js) - Google Analytics