1

我正在为一个个人项目做一个伪 ORM,我正在为 20 多种不同的 SQL 方言编译一个兼容性检查列表。

目前,我正在研究方言是否支持该NULLS LAST标志,即在对表格进行排序时,将 null 作为最后一项1, 2, 3, 4, null而不是null, 1, 2, 3, 4.

我有 DashDB/MySQL/MSSQL 等语言的结果(是的 - 他们提供NULL LAST)但是,以下方言,我无法找到 null-last-ability:

  1. 德诺多

  2. 内存SQL

  3. 火花

  4. VectorWise

  5. 极限数据

一个简单的“是”或“否”就足以回答您的问题,但是,如果您还可以写下有关如何执行NULL LAST操作的查询,那也很棒!

4

1 回答 1

2

我检查了 MemSQL 并且 afaikNULLS LAST不支持语法。也就是说,您可以通过执行以下操作来实现此目的:

SELECT * FROM foo ORDER BY IFNULL(bar, MAGIC_VALUE) ASC

更改 MAGIC_VALUE 以便它根据列中的数据排序最后/第一个。如果你对 perf hit 没问题,你可以改变这个值,如果它不为 null,则该值始终以排序高的前缀开头,如果为 null,则该值排序低于前缀。

同样的事情可以用来实现 NULL FIRST。

于 2016-08-23T23:01:09.327 回答