日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql中与null值不能比较

發布時間:2025/4/5 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql中与null值不能比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在mysql中,選擇某field為不等于某值的時候,使用<>符號。但查bug時發現該field為null的并不能查出來。

查原因為:

null值不能與其他值進行比較,只能使用is null或is not null來進行判斷。

所以,限制條件需要寫:

(field is null or field<>VALUE)

這樣才行。


參考鏈接:

http://jingyan.baidu.com/article/9113f81b2adc882b3214c7cb.html


MySql數據庫中null值與其他值的比較

  • |
  • 瀏覽:2112
  • |
  • 更新:2013-11-28 11:05
  • |
  • 標簽:mysql?
一鍵約師傅

百度師傅百度師傅,專治各種手機、電腦問題

數據庫中存在null,那么怎樣查找這些值是null的記錄呢?

工具/原料

  • MySql數據庫

方法/步驟

  • 查找到某一個字段是null的記錄,最簡單的想法可能是這樣:

    select *from? tableName where columnName = null

    但是這樣是不行的,因為null不能和任何值比較。在SQL中,NULL值與任何其它值的比較(即使是NULL)永遠不會為“真”。包含NULL的表達式總是會導出NULL值,除非在關于操作符的文檔中以及表達式的函數中作了其他規定。

  • 我曾經犯的錯誤如下:

    注意,紅色字體的查詢條件只能查詢出pass_name!='batch'且不為null的字段(null不能和任何值比較,即使是null也不會是true),如果需要查詢出pass_name是null的字段,必須顯示的加上:or pass_name is NULL

    SELECT COUNT(*) FROM?表名?WHERE FROM_UNIXTIME(submit_time) >= '2012-08-01' AND FROM_UNIXTIME(submit_time) < '2013-07-01' AND?pass_name <> 'test'(錯誤)

    查詢出包含null且pass_name!='batch'的數據:

    SELECT COUNT(*) FROM 表名 WHERE FROM_UNIXTIME(submit_time) >= '2012-08-01' AND FROM_UNIXTIME(submit_time) < '2013-07-01' AND?(pass_name <> 'test' or pass_name is null)(正確查出pass_name!=null及pass_name是null的)

  • null表示的含義是未知,即不知道有沒有。和‘’空字符串不等,因為空字符串相當于沒有值。null代表的是不知道有沒有值。所以在數據查詢中如果字段默認值是null,想查詢出不等于某個條件的一定要加上——字段名 is null 或者字段名 is not null來包含是null或者不是null的字段

    END
  • 注意事項

    • null和任何值都不能比較

    • null只能用is null 或者is not null 來判斷,不能用=或者!=來判斷


    總結

    以上是生活随笔為你收集整理的mysql中与null值不能比较的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。