Сортировать по дате по возрастанию с нулями - PullRequest
2 голосов
/ 16 февраля 2012

Я использую Java и Hibernate 3.2.5.ga.

У меня есть таблица со столбцом даты. Я хочу создать hql-запрос, который будет сортировать результат по возрастанию даты, но ставит нулевые значения последними.

Обычно я сортирую по дате, asc сначала возвращает нули, а ключевое слово "NULL LAST" не работает.

Как мне этого добиться?

Ответы [ 2 ]

5 голосов
/ 16 февраля 2012

Используйте запрос так:

SELECT YourDateColumn
FROM YourTable
WHERE YourCondition
ORDER BY
  CASE WHEN YourDateColumn IS NULL THEN 1 ELSE 0 END,
  YourDateColumn
0 голосов
/ 16 февраля 2012

У меня есть обходное решение, возможно, это неправильный путь, но вы можете подумать о наличии дополнительного столбца «temp» в вашей базе данных и определить триггер, который будет обновлять значение temp каждый раз при обновлении столбца даты и в этом триггере, если дата равна NULL, установите временное значение равным 100, а если оно не установлено временным значением, равным 0.

Теперь в вашем запросе выполните сортировку по temp asc, date asc, по которой все даты NOT NULL будут идти первыми, а затем даты, которые равны NULL

PS: Я сам не пробовал, просто попробуй

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...