[SQL ] Select where 遇到 null 時會被自動去掉

看板Database作者 (小躌)時間14年前 (2012/02/23 19:13), 編輯推噓3(309)
留言12則, 4人參與, 最新討論串1/1
只有一台電腦有遇到這問題 我是用 Mysql 假如 select * from A where B != 0; 時發現連 B = null 的資料都被篩選掉 請問是 mysql 設定被改到或是 bug ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.0.127

02/23 21:59, , 1F
select * from A where B is null
02/23 21:59, 1F

02/23 22:00, , 2F
是將null的資料找出來
02/23 22:00, 2F

02/23 22:00, , 3F
null在資料庫系統中是一個很特別的值
02/23 22:00, 3F

02/23 22:11, , 4F
select * from A where B is null and B != 0;
02/23 22:11, 4F

02/23 22:12, , 5F
這應該才是你本文想下的SQL
02/23 22:12, 5F

02/23 22:16, , 6F
In SQL, the NULL value is never true in comparison
02/23 22:16, 6F

02/23 22:16, , 7F
to any other value, even NULL.
02/23 22:16, 7F

02/23 22:17, , 8F
這是官方文件上的定義(在理論上也都是如此)
02/23 22:17, 8F

02/23 22:18, , 9F
至於為什麼就自己看理論的書就會更了解 還有實作部分
02/23 22:18, 9F

02/23 23:20, , 10F
真的耶 每次遇到null都很頭大
02/23 23:20, 10F

02/24 00:05, , 11F
推c大的精采解說 ^^
02/24 00:05, 11F

02/25 23:55, , 12F
應該是 B is null or B != 0
02/25 23:55, 12F
文章代碼(AID): #1FHXzeti (Database)