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

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

 

SELECT语句<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

结果集排序

标准(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

阅读更多
个人分类: 数据库技术
想对作者说点什么? 我来说一句

SQL标准2003

2014年03月14日 10.28MB 下载

数据库标准SQL2003

2013年09月26日 10.28MB 下载

sql2003标准文件【PDF】

2009年01月09日 10.28MB 下载

<em>sql2003标准</em>文件【PDF】

2018年05月07日 0B 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭