在SQL中具有很大的价值

jon*_*nny 1 mysql sql oracle

好的,我必须最后输入空值.该查询应该在Oracle和MySQL下运行.

我已经想到了

ORDER BY

    CASE WHEN some_table.ord IS NULL THEN 9999999999 ELSE some_table.ord END
Run Code Online (Sandbox Code Playgroud)

我应该使用值> max(some_table.ord)而不是9999999999.

我觉得确定这个值的子查询在这里太难看了.

如果这是C++,我可以使用像INT_MAX这样的宏来实现此目的.你能说出它的跨DBMS SQL双胞胎吗?

UPDATE

问题是我是否可以把东西...漂亮而不是9999999999,这样查询在Oracle和MySQL中都能正常工作,

不是如何将null值放在最后

Thi*_*ilo 5

为null标志使用额外的列:

order by 
   case when some_table.ord is null then 2 else 1 end ,
   some_table.ord
Run Code Online (Sandbox Code Playgroud)

或者,如果您对此列可以采用的值有足够的了解,只需硬编码比那里的任何值更大的数字:

order by coalesce(some_table.ord, 9999999999)
Run Code Online (Sandbox Code Playgroud)