主流数据库之间对SQL:2003标准的不同实现方法比较(第二部分 结果集排序)

本文严禁在未征得本人同意的情况下以任何形式进行转载。本人只接受在邮件中的转载申请,如需转载,请发送邮件至 betteryou@126.com。 

 

SELECT语句

 

结果集排序

标准(Standard)

SQL标准指出关系(relation)是未排序的,但结果集可能在通过游标返回时被排序:

 

DECLARE cursorname CURSOR FOR

SELECT … FROM … WHERE …

ORDER BY column_name1, column_name2, …

 

如上所述,标准并不允许将ORDER BY子句放置在除游标以外的其它地方。但也存在一些特例,如window函数中的ORDER BY(包括ROW_NUMBER) OVER… RANK() OVER…)

 

标准中未指定在排序比较中NULL值与非NULL值的比较规则,但所有的NULL在排序中被视为一样的值,而且所有的NULL值必须排于非NULL值之前或之后。

PostgreSQL

除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BYNULL值被视为比非NULL

DB2

除了在游标定义中,DB2还支持在别的上下文中使用ORDER BYNULL值被视为比非NULL

MS SQL Server

除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BYNULL值被视为比非NULL

MySQL

除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BY

 

NULL值被视为比非NULL,除非在列名前加上-(减号),而且ASC变为DESC,或DESC变为ASC;似乎在列名前加-(减号)的特性未被记入文档。

Oracle

除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BY

 

NULL值被视为比非NULL;虽然如此,可通过在ORDER BY表达式中添加NULLS FIRSTNULLS LAST来改变。

 

请注意Oracle将空字符串和NULL视为同一值。

 

 

原文参考:Comparison of different SQL implementations

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值