MySQL如何判斷字符串為NULL或者為空字符串
判斷字符串為NULL或者為空字符串
函數(shù)名 | 說(shuō)明 |
---|---|
ISNULL(expr) | 如果expr為null返回值1,否則返回值為0 |
IFNULL(expr1,expr2) | 如果expr1值為null返回expr2的值,否則返回expr1的值 |
NULLIF(expr1,expr2) | 如果expr1==expr2返回值為null,否則返回expr1的值;相當(dāng)于case when expr1=expr2 then null else expr1 end |
COALESCE | 返回傳入的參數(shù)中第一個(gè)非null的值 |
IF(expr1,expr2,expr3) | 如果expr1的值為true,則返回expr2的值,否則返回expr3的值 |
例:
查找學(xué)生姓名不為null的學(xué)生信息
SELECT * FROM student WHERE ISNULL(stu_name) <1 SELECT * FROM student WHERE stu_name is not null
查詢(xún)學(xué)生成績(jī),若score為null則返回0
SELECT IFNULL('score',0) FROM stu_score SELECT COALESCE('score',0) FROM stu_score SELECT IF(IFNULL('score',null)=null,0,score) FROM stu_score SELECT CASE WHEN score is null THEN 0 ELSE score END AS score FROM stu_score
MySQL中NULL和空字符串區(qū)別
相信很多用了MySQL很久的人,對(duì)這兩個(gè)字段屬性的概念還不是很清楚
一般會(huì)有以下疑問(wèn)
- 1.字段類(lèi)型是NOT NULL,為什么可以插入空值?
- 2.NOT NULL的效率比NULL高?
- 3.判斷字段不為空的時(shí),到底要 select * from table where column <> 還是要用 select * from table wherecolumn is not null 呢?
帶著上面幾個(gè)疑問(wèn),我們來(lái)深入研究一下NULL 和 NOT NULL 到底有什么不一樣。
首先,我們要搞清楚“空字符串” 和 “NULL” 的概念:
- 空值是不占用空間的。
- MySQL中的NULL是占用空間的
打個(gè)比方來(lái)說(shuō),你有一個(gè)杯子,空值代表杯子是真空的,NULL代表杯子中裝滿(mǎn)了空氣,雖然杯子看起來(lái)都是空的,但是區(qū)別是很大的。
注意事項(xiàng)
在進(jìn)行count()統(tǒng)計(jì)某列的記錄數(shù)的時(shí)候,如果采用的NULL值,系統(tǒng)會(huì)自動(dòng)忽略掉,但是空值是會(huì)進(jìn)行統(tǒng)計(jì)到其中的。
判斷NULL 用IS NULL 或者 IS NOT NULL, SQL語(yǔ)句函數(shù)中可以使用ifnull()函數(shù)來(lái)進(jìn)行處理,判斷空字符用=''或者 <>''來(lái)進(jìn)行處理
對(duì)于MySQL特殊的注意事項(xiàng),對(duì)于timestamp數(shù)據(jù)類(lèi)型,如果往這個(gè)數(shù)據(jù)類(lèi)型插入的列插入NULL值,則出現(xiàn)的值是當(dāng)前系統(tǒng)時(shí)間。插入空值,則會(huì)出現(xiàn) 0000-00-00 00:00:00
對(duì)于空值的判斷到底是使用is null 還是='' 要根據(jù)實(shí)際情況來(lái)進(jìn)行區(qū)分。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解MySQL like如何查詢(xún)包含''%''的字段(ESCAPE用法)
這篇文章主要介紹了詳解MySQL like如何查詢(xún)包含'%'的字段(ESCAPE用法),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12MySQL定時(shí)執(zhí)行腳本(計(jì)劃任務(wù))命令實(shí)例
在mysql中我們可以直接進(jìn)行一些參數(shù)設(shè)置讓它成定時(shí)為我們執(zhí)行一些任務(wù)了,這個(gè)雖然可以使用windows或者linux中的計(jì)劃任務(wù)實(shí)現(xiàn),但是mysql本身也能完成2013-10-10詳解MySql存儲(chǔ)過(guò)程參數(shù)的入門(mén)使用
這篇文章主要介紹了MySql存儲(chǔ)過(guò)程參數(shù)的入門(mén)使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Linux下MySQL 5.5/5.6的修改字符集編碼為UTF8的方法
下面小編就為大家?guī)?lái)一篇Linux下MySQL 5.5/5.6的修改字符集編碼為UTF8的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Mysql 日期格式化及復(fù)雜日期區(qū)間查詢(xún)
最近在做項(xiàng)目涉及到Mysql的復(fù)雜日期查詢(xún),日期查詢(xún)其實(shí)在數(shù)據(jù)庫(kù)中查詢(xún)其實(shí)還是用的挺多的,所以本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2021-09-09MySQL復(fù)合查詢(xún)(多表查詢(xún)、子查詢(xún))的實(shí)現(xiàn)
MySQL復(fù)合查詢(xún)是指在一個(gè)SQL語(yǔ)句中使用多個(gè)查詢(xún)條件,以過(guò)濾和檢索數(shù)據(jù),本文主要介紹了MySQL復(fù)合查詢(xún)(多表查詢(xún)、子查詢(xún))的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12