zoukankan      html  css  js  c++  java
  • Mysql实现null值排在最前或最后

    最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造。

    oracle做数据排序的时候,有时候可以用nulls first或者nulls last将null值排在最前或者最后。
    oracle方法:
    null值排在最前

    select * from A order by a desc null first
    

    null值排在最后

    select * from A order by a desc null last
    

    不过迁到Mysql的话,mysql并没有提供类似函数,所以要怎么实现?下面给出解决方法:
    null值排在最后,用Mysql的IF和ISNULL函数。如果为空返回1,否返回0

    select * from A order by IF(ISNULL(a),1,0),a desc
    

    null值排在最前,用Mysql的IF和ISNULL函数。如果为空返回1,否返回0

    select * from A order by IF(ISNULL(a),0,1),a desc
    

    如果mybatis里需要oracle和Mysql版本的,或者可以从后台传个数据表版本标识dbType,或者直接用mybatis的_databaseId方法。

     <if test="dbType=='oracle'">
    		 order by c.create_date desc nulls last
    		 </if>
    		 <if test="dbType=='mysql'">
    		 order by IF(ISNULL(c.create_date),1,0), c.create_date desc
    		 </if>
    
  • 相关阅读:
    基础数据类型
    python2x与python3x区别(30个)更新中。。。
    注释
    常量
    变量
    十、SpringCloud config分布式配置中心
    九、Gateway新一代网关
    八、Hystrix断路器(下)
    八、Hystrix断路器(上)
    七、OpenFeign服务接口调用
  • 原文地址:https://www.cnblogs.com/mzq123/p/10381211.html
Copyright © 2011-2022 走看看