Mysql字段為null的加減乘除運算方式
Mysql字段為null的加減乘除運算
數(shù)據(jù)庫表test_table

如下查詢:
select id, total, used, (total - used) as have from test_table;
查詢結(jié)果:

解決辦法
使用IFNULL 函數(shù)來解決NULL值問題
select id, IFNULL(total,0) as total, IFNULL(used,0) as used, (IFNULL(total,0) - IFNULL(used,0)) as have from test_table;
查詢結(jié)果:

數(shù)據(jù)庫關(guān)于null不參與運算的坑
舉個例子:(閱讀時:請記住這個字段以及它的值 )

如果數(shù)據(jù)庫表里字段值為 null 時,那么在寫sql語句用這個值去做比較運算時(一般看見 null 或者參數(shù)類型為 string 時 也沒有人去做加減乘除),除了 is nl 或者 is not nlll 沒有其他操作, 有時 字段類型 為 string ,值為 "2" 時, 會用 <> 如果數(shù)據(jù)庫表里字段值為 null 時,那么在寫sql語句用這個值去做比較運算時(一般看見 null 或者參數(shù)類型為 string 時 也沒有人去做加減乘除),除了 is null 或者 is not null 沒有其他操作, 有時 字段類型 為 string ,值為 "2" 時, 會用 <> (不等于)] 判斷,這都沒問題,問題出現(xiàn)在 null 與其他值同時存在這個 當前字段 下,那么用 <> 會造成 mysql 查詢不到數(shù)據(jù),因為 <>"2" 不會把 null 過濾出去,此時 null 是參與運算的,所以sql語句應(yīng)當調(diào)整為 坑 is null(is not null) and 坑=“2”(坑<>“2”) 這種寫法,sql執(zhí)行之后才會是我們想要的結(jié)果。
發(fā)生場景
Mybatis框架的動態(tài)sql 在寫xml映射文件時 比如: <if test=" 坑 = ‘2’ 或(坑 <> ‘2’) > 這種不實時看數(shù)據(jù)庫,腦子里還想著業(yè)務(wù)需求怎么實現(xiàn)時(一心二用)
其本質(zhì)還是對于 基礎(chǔ)知識 掌握不扎實,所以不斷進步的同時,也不要忘了 夯實基礎(chǔ) 個人理解: 動態(tài)sql最強大的 不是它的語法和格式的優(yōu)點,首先 它并沒有原生sql語句的可讀性高,其次 動態(tài)sql本質(zhì)也 僅僅 就起到一個sql語句拼接的作用,它真正強大的點是 <forEach> 這個可以遍歷集合的標簽,這是原生sql語句無法做到的事情,所以在沒有對 集合 進行操作的情況下,盡量用原生sql去做。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL字段時間類型該如何選擇實現(xiàn)千萬數(shù)據(jù)下性能提升10%~30%
這篇文章主要介紹了MySQL字段的時間類型該如何選擇?才能實現(xiàn)千萬數(shù)據(jù)下性能提升10%~30%,主要概述datetime、timestamp與整形時間戳相關(guān)的內(nèi)容,并在千萬級別的數(shù)據(jù)量中測試它們的性能,最后總結(jié)出它們的特點與使用場景2023-10-10
MySQL創(chuàng)建用戶以及用戶權(quán)限詳細圖文教程
在MySQL中可以通過創(chuàng)建用戶來管理數(shù)據(jù)庫的訪問權(quán)限,下面這篇文章主要給大家介紹了關(guān)于MySQL創(chuàng)建用戶以及用戶權(quán)限的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2024-06-06
MySQL中表復(fù)制:create table like 與 create table as select
這篇文章主要介紹了MySQL中表復(fù)制:create table like 與 create table as select,需要的朋友可以參考下2014-12-12
MySQL數(shù)據(jù)庫輸入密碼后閃退問題的解決方法
這篇文章主要為大家詳細介紹了MySQL數(shù)據(jù)庫輸入密碼后閃退的問題及解決方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
MySQL 實現(xiàn)lastInfdexOf的功能案例
這篇文章主要介紹了MySQL 實現(xiàn)lastInfdexOf的功能案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
mysql 連接出現(xiàn)Public Key Retrieval is n
在MySQL連接中出現(xiàn)“Public Key Retrieval is not allowed”錯誤,通常是因為在使用安全套接字層(SSL)連接時遇到了問題,本文就來介紹一下解決方法,感興趣的可以了解一下2024-03-03

