mysql字段為null為何不能使用!=
mysql字段為null不能使用!=
數(shù)據(jù)庫(kù)表中某一字段(mark)默認(rèn)值為NULL,進(jìn)行where語(yǔ)句查詢時(shí)mark!=‘xxxx’,并不能將字段為NULL的數(shù)據(jù)查詢出來(lái)。
1、mysql中空值不占空間,null值占空間。
2、當(dāng)使用 IS NOT NULL 或者 IS NULL 時(shí),只能查出字段中沒(méi)有不為NULL的或者為 NULL 的,不能查出空值。
3、判斷NULL 用IS NULL 或者 is not null,判斷空字符用 =’‘或者<>’'來(lái)進(jìn)行處理。
4、在進(jìn)行count()統(tǒng)計(jì)某列的記錄數(shù)的時(shí)候,如果采用的NULL值,會(huì)被系統(tǒng)自動(dòng)忽略掉,但是空值是會(huì)進(jìn)行統(tǒng)計(jì)到其中的。
5、MySql中如果某一列中含有NULL,那么包含該列的索引就無(wú)效了。這一句不是很準(zhǔn)確。(???)
6、對(duì)于MySQL特殊的注意事項(xiàng),對(duì)于timestamp數(shù)據(jù)類型,如果往這個(gè)數(shù)據(jù)類型插入的列插入NULL值,則出現(xiàn)的值是當(dāng)前系統(tǒng)時(shí)間。插入空值,則會(huì)出現(xiàn) 0000-00-00 00:00:00
7、NULL值到非NULL的更新無(wú)法做到原地更新,更容易發(fā)生索引分 裂,從而影響性能。(???)
如果想查出字段為null的數(shù)據(jù),可以使用:
SELECT * FROM A WHERE B1 != 1 OR B1 is Null SELECT * FROM A WHERE IFNULL(B1,'') != 1
set ANSI_NULLS off,這時(shí)你會(huì)發(fā)現(xiàn)IS NOT NULL 和 != null 是等效的
mysql語(yǔ)句“!=“使用注意事項(xiàng)
當(dāng)我們使用mysql的!=的時(shí)候,要注意一點(diǎn)的是!=只會(huì)篩選該字段非空的數(shù)據(jù),如果查詢的表中有字段為null,這些數(shù)據(jù)都不會(huì)被查詢出來(lái),即時(shí)他!=某個(gè)數(shù)據(jù)
例如:
select * from test where type != 2
test表中 type 存在 1 ,2,null
那么該查詢語(yǔ)句只會(huì)篩選出type為1的數(shù)據(jù),即使 null也不等于2
建議使用:
select * from test where (type != 2 or type is null)
或者
select * from test where ifnull(type,"")!= 2
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL系列教程小白數(shù)據(jù)庫(kù)基礎(chǔ)
這篇文章主要為大家介紹了MySQL系列中的數(shù)據(jù)庫(kù)基礎(chǔ),非常適合數(shù)據(jù)庫(kù)小白的入門基礎(chǔ)篇,詳細(xì)的講解了數(shù)據(jù)庫(kù)的基本概念以及基礎(chǔ)命令及操作示例,有需要的朋友可以借鑒參考下2021-10-10深入了解mysql的4種常用、重要的數(shù)據(jù)類型
對(duì)于在開發(fā)大型電子商務(wù)網(wǎng)站時(shí),如果碰到有限的硬件和系統(tǒng)環(huán)境情況下,合理的數(shù)據(jù)庫(kù)表結(jié)構(gòu)的設(shè)計(jì)是必不可少的2014-05-05windows環(huán)境下mysql的解壓安裝及備份和還原
這篇文章主要介紹了windows環(huán)境下mysql的解壓安裝及備份和還原,需要的朋友可以參考下2017-09-09在Linux系統(tǒng)的命令行中為MySQL創(chuàng)建用戶的方法
這篇文章主要介紹了在Linux系統(tǒng)的命令行中為MySQL創(chuàng)建用戶的方法,包括對(duì)所建用戶的權(quán)限管理,需要的朋友可以參考下2015-06-06