Mysql實(shí)現(xiàn)null值排在最前或最后

最近在做項(xiàng)目遷移,Oracle版本的遷到Mysql版本,遇到有些oracle的函數(shù),mysql并沒有,所以就只好想自定義函數(shù)或者找到替換函數(shù)的方法進(jìn)行改造。

oracle做數(shù)據(jù)排序的時(shí)候,有時(shí)候可以用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并沒有提供類似函數(shù),所以要怎么實(shí)現(xiàn)?下面給出解決方法:
null值排在最后,用Mysql的IF和ISNULL函數(shù)。如果為空返回1,否返回0

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

null值排在最前,用Mysql的IF和ISNULL函數(shù)。如果為空返回1,否返回0

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

如果mybatis里需要oracle和Mysql版本的,或者可以從后臺(tái)傳個(gè)數(shù)據(jù)表版本標(biāo)識(shí)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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SQL 語法大全 標(biāo)簽(空格分隔): SQL DB2 SQL語法大全 SQL SELECT SQL SELECT ...
    lumicinta閱讀 13,463評(píng)論 3 196
  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 8,075評(píng)論 5 115
  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫具有一個(gè)或多個(gè)不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,155評(píng)論 0 19
  • MySQL數(shù)據(jù)庫對(duì)象與應(yīng)用 2.1-MySQL數(shù)據(jù)類型 庫建立好之后基本不動(dòng),和我們接觸最頻繁的是表. 建表就是聲...
    極客圈閱讀 2,259評(píng)論 0 8
  • 上午考完數(shù)學(xué)也意味著五年級(jí)就結(jié)束了。爸爸接你回家等我中午出去吃頓大餐慶祝一下,我們仨心情特爽,騎著電車在烈日下飛馳...
    素面迎風(fēng)閱讀 159評(píng)論 0 0

友情鏈接更多精彩內(nèi)容