排序中有null字段希望null值置为最后面

如有如下表

方式一:利用ISNULL函数

ISNULL(NULL) 返回 1

ISNULL('非null值') 返回 0

select * from nums order by isnull(num) asc, num asc

这样子null值就永远在最后面了

方式二:利用asc null值在最上面, desc null值在最下面的特性

desc null值在最下面的特性

select * from nums order by -num desc;

方式三:得用coalesce(..)函数

coalesce()函数 如果所有参数都为null ,则返回null。 否则返回第一个遇到的非null值

select * from nums order by coalesce(num, 10000) asc;

方式四: is null(与 isnull函数很相似)

select * from nums order by num is null, num asc;

方式五, if(condition, trueResult, falseResult)

在mysql中 0代表false, 大于0的数值代表true select * from nums order by if(num is num, 1, 0), num

results matching ""

    No results matching ""