Я точно знаю, что DB2 Express и DB2 (по крайней мере до v8) не поддерживают предложение NULLS FIRST
.
Если вы хотите портативное решение, вам, возможно, придется выбрать что-то вроде:
select * from tbl where fld is null
union all select * from tbl where fld is not null
Я думаю, что результат объединения (по крайней мере, в DB2 вам нужно будет проверить остальные) гарантированно будет правильно упорядочен.
Объединение будет влиять на производительность, так как вы запускаете функцию для каждой возвращаемой строки. Однако это зависит от количества строк в базе данных.
Возможно, вам придется прибегнуть к выполнению двух запросов в коде к двум различным наборам записей, а затем обработать их по порядку.
РЕДАКТИРОВАТЬ: я только что проверил стандарт SQL, и не гарантируется, что запросы, объединенные с UNION ALL
, упорядочены; они могут быть смешаны. Похоже, вам, возможно, придется прибегнуть к коду, выполняющему два разных запроса, как упомянуто выше.