我正在为个人项目做一个伪ORM,我正在为那些20多种不同的SQL方言编译兼容性检查列表。
目前,我正在研究方言是否支持NULLS LAST
标志,即在排序表时,将null作为最后一项(1, 2, 3, 4, null
而不是null, 1, 2, 3, 4
。
我有DashDB / MySQL / MSSQL等语言的结果(是的 - 他们提供NULL LAST
)但是,以下方言,我无法找到null-last-ability:
Denodo
MemSQL
火花
VectorWise
XtremeData在
一个简单的"是"或"不"但是,如果你还可以写下关于如何执行NULL LAST
操作的查询,那么你的答案就足够了,那也很棒!
答案 0 :(得分:2)
我检查了MemSQL,并且afaik不支持NULLS LAST
语法。也就是说,您可以通过以下方式实现这一目标:
SELECT * FROM foo ORDER BY IFNULL(bar, MAGIC_VALUE) ASC
更改MAGIC_VALUE,以便根据列中的数据对last / first进行排序。如果你对perf命中没问题,你可以改变这个值,使得如果它不为null,则值总是以排序高的前缀开始,如果为null,则值的排序低于前缀。
同样的事情可以用来实现NULL FIRST。