Флаг NULLS LAST в Denodo, MemSQL, Spark, VectorWise и XtremeData

Я делаю псевдо-ORM для личного проекта и собираю список проверок совместимости для более чем 20 различных диалектов SQL.

В настоящее время я изучаю, поддерживает ли диалект 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 операция, это тоже было бы здорово!

1 ответ

Я проверил на MemSQL и afaik NULLS LAST синтаксис не поддерживается. Тем не менее, вы можете достичь этого, сделав что-то вроде этого:

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

Измените MAGIC_VALUE, чтобы он сортировал последний / первый в зависимости от данных в столбце. Если у вас все в порядке с перфом, вы можете изменить значение так, чтобы, если оно не было равно нулю, значение всегда начиналось с префикса, который сортирует высоко, а если оно равно нулю, то значение сортируется ниже, чем префикс.

То же самое можно использовать для реализации NULL FIRST.

Другие вопросы по тегам