麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

Mysql實現null值排在最前/最后的方法示例

2024-07-25 19:09:38
字體:
來源:轉載
供稿:網友

前言

我們已經知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句來讀取數據表中的數據,但是當提供的查詢條件字段為 NULL 時,該命令可能就無法正常工作。

為了處理這種情況,MySQL提供了三大運算符:

  • IS NULL: 當列的值是 NULL,此運算符返回 true。
  • IS NOT NULL: 當列的值不為 NULL, 運算符返回 true。
  • <=>: 比較操作符(不同于=運算符),當比較的的兩個值為 NULL 時返回 true。

關于 NULL 的條件比較運算是比較特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值與任何其它值的比較(即使是 NULL)永遠返回 false,即 NULL = NULL 返回false 。

MySQL 中處理 NULL 使用 IS NULL 和 IS NOT 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>

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片成人| 欧美高清一级片 | 爱操成人网 | 九九热九九爱 | 欧美精品一区二区三区在线播放 | 国产精选电影免费在线观看 | 亚洲黑人在线观看 | 免费久久精品 | 精品久久久久久国产 | 久久精品一区二区三区四区五区 | 久久久久久久久久综合 | 久久精品黄 | 亚洲免费网站 | 曰韩一二三区 | 精品国产一区二区亚洲人成毛片 | 97黄色网| 国产一国产一级毛片视频在线 | 毛片在线视频观看 | 久久在线精品视频 | 成人午夜在线免费观看 | 久久艹综合 | 久久宗合色 | 国产午夜亚洲精品理论片大丰影院 | 国产亚洲美女精品久久久2020 | 性欧美日本 | 伦理三区 | 午夜精品小视频 | av在线免费观看不卡 | 亚洲精品无码不卡在线播放he | 麻豆视频国产在线观看 | 日本网站在线看 | 羞羞视频一区二区 | 国产成人在线看 | 一级成人免费 | 成人一级免费视频 | 免费看日产一区二区三区 | 国产精品爆操 | 免费国产在线观看 | 91短视频版高清在线观看www | 禁漫天堂久久久久久久久久 | 久久视频精品 |