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>
    
  • 相关阅读:
    常用词汇短语
    Java中的数据结构
    Java中的设计模式
    .NET中的编译、程序调用
    常用口语
    0. Angular框架原理
    茶叶
    NPOI自定义单元格背景颜色
    ASP.NET MVC添加Action就找不到
    navicat for mysql 导入SQL Server显示中文乱码解决办法
  • 原文地址:https://www.cnblogs.com/mzq123/p/10381211.html
Copyright © 2011-2022 走看看