2016-08-23 64 views
1

我正在爲一個個人項目做一個僞ORM,並且正在爲20多個不同的SQL方言編寫一個兼容性檢查列表。NULLS LAST在Denodo,MemSQL,Spark,VectorWise和XtremeData中的標誌

目前,我正在研究方言是否支持NULLS LAST標誌,即在對錶進行排序時,作爲最後一項如1, 2, 3, 4, null而不是null, 1, 2, 3, 4排出。

我有喜歡DashDB/MySQL的/ MSSQL等語言成績(是 - 他們提供NULL LAST)但是,下面的方言,我無法找到空上次能力:

  1. Denodo

  2. MemSQL

  3. 星火

  4. VectorWise

  5. XtremeData在

簡單的「是」或「否」將在你的答案足夠了,但是,如果你也可以編寫查詢下來如何執行NULL LAST操作,那將是巨大的太!

回答

2

我檢查了MemSQL和afaik NULLS LAST語法不支持。這就是說,你可以做這樣的事情做到這一點:

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

變化MAGIC_VALUE所以最後排序/第一取決於列中的數據。如果可以使用perf命中,則可以對該值進行變異,以便如果值不爲null,則該值始終以高排序的前綴開頭,如果值爲空,則該值的排序次序低於前綴。

同樣的事情可以用來實現NULL FIRST。

+0

謝謝!你知道其他四種方言是否可行嗎? – theGreenCabbage

+0

應該爲Spark工作,不知道其他人。 –