mysql null 排前面_Mysql实现null值排在最前/最后的方法示例
前言
我們已經知道 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方法。
order by c.create_date desc nulls last
order by IF(ISNULL(c.create_date),1,0), c.create_date desc
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
您可能感興趣的文章:MySQL查詢空字段或非空字段(is null和not null)
mysql中IFNULL,IF,CASE的區別介紹
mysql中is null語句的用法分享
mysql中將null值轉換為0的語句
mysql 中存在null和空時創建唯一索引的方法
mysql 轉換NULL數據方法(必看)
MySQL Left JOIN時指定NULL列返回特定值詳解
MySQL中對于NULL值的理解和使用教程
SQL Server、Oracle和MySQL判斷NULL的方法
詳解MySQL中的NULL值
總結
以上是生活随笔為你收集整理的mysql null 排前面_Mysql实现null值排在最前/最后的方法示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库比对视频教程_MySQL
- 下一篇: mysql刷新连接_MYSQL频繁出现连