我有一个列在我的数据库(一个标志)与型varchar(1)填充Y或NULL(这是它是如何,不在我的控制)。

在SQL服务器,做一个上升以通过查询,NULL是在顶部。应该这种行为是一致的Oracle和DB2?

如果,相反我有一个凝聚在柱,以确保它不是空,在的查询,我可能击中任何业绩的问题(由于表扫描等)?

编辑

查询需要一致通过的所有3个数据库,否则我将不得不处理它在码,因此,我想利用的功能结合

编辑

我选择的人作为回答,因为它处理的两个部分的问题,并给了一个有用的解决方法,但是,谢谢me.yahoo.com/a/P4tXrx 用于链接到 在这里,

有帮助吗?

解决方案

我知道一个事实,即DB2 Express和DB2(至少到V8)确实的支持NULLS FIRST子句。

如果你想要一个便携式解决方案,您可能要选择类似:

select * from tbl where fld is null
    union all select * from tbl where fld is not null

我觉得工会(至少在DB2,你需要检查等)的结果是保证正确排序。

聚结的会影响性能,因为你正在运行一个函数的每一行返回。然而,这取决于在数据库中的行数。

您可能不得不采取这样的代码两个查询到两个不同的记录集,然后处理它们才能。

编辑:我刚刚检查了SQL标准,它不能保证有UNION ALL加入了查询排序;他们可能是相互混合。因此,它看起来像你可能不得不求助于运行两个不同的查询码,如上所述。

其他提示

  

在SQL Server中,通过查询操作的方式的升序,NULL在顶部排序。如果这种行为对于Oracle和DB2是一致的?

显然这是一个相对较新的标准

  

在SQL标准的核心功能没有明确界定为空值的默认排序顺序。随着SQL:2003扩展T611“基本OLAP操作”,空白可前或使用NULLS FIRST或NULLS订单的最后条款BY列表中,分别所有数据值后排序。然而,并非所有的DBMS供应商实现此功能。谁不实现这个功能供应商可能为空在DBMS排序指定不同的治疗方法。

在oracle中你可以这样做:

ORDER BY value NULLS FIRST 

ORDER BY value NULLS LAST

尝试在SQL服务器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top