MariaDB 空值

2022-08-16 15:29 更新

使用NULL值時,請記住它們是未知值。 它們不是空字符串或零,它們是有效值。 在表創(chuàng)建中,列規(guī)范允許將它們設(shè)置為接受空值,或拒絕它們。 只需使用NULL或NOT NULL子句。 這在缺少記錄信息(如ID號)的情況下具有應(yīng)用。

用戶定義的變量的值為NULL,直到顯式賦值。 存儲的例程參數(shù)和局部變量允許將值設(shè)置為NULL。 當(dāng)局部變量沒有默認(rèn)值時,它的值為NULL。

NULL不區(qū)分大小寫,并具有以下別名 - 

  • UNKNOWN(布爾值)
  • \ N

NULL運(yùn)算符

標(biāo)準(zhǔn)比較運(yùn)算符不能與NULL(例如,=,>,> =,<=,<或或!=)一起使用,因?yàn)樗信cNULL值的比較都返回NULL,而不是true或false。 與NULL或可能包含它的比較必須使用“<=>”(NULL-SAFE)運(yùn)算符。

其他可用的運(yùn)營商有 - 

  • IS NULL - 它測試NULL值。

  • IS NOT NULL - 它確認(rèn)不存在NULL值。

  • ISNULL - 在發(fā)現(xiàn)NULL值時返回值1,在不存在時返回0。

  • COALESCE - 返回列表的第一個非NULL值,或者在沒有一個值的情況下返回NULL值。

對NULL值排序

在排序操作中,NULL值具有最低值,因此DESC次序在底部產(chǎn)生NULL值。 MariaDB允許為NULL值設(shè)置更高的值。

有兩種方法可以做到這一點(diǎn),如下所示 -

SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;

另一種方式 -

SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;

NULL函數(shù)

當(dāng)任何參數(shù)為NULL時,函數(shù)通常輸出NULL。 但是,還有專門用于管理NULL值的函數(shù)。 他們是 - 

  • IFNULL() - 如果第一個表達(dá)式不為NULL,它返回它。 當(dāng)它求值為NULL時,它返回第二個表達(dá)式。

  • NULLIF() - 當(dāng)比較的表達(dá)式相等時,它返回NULL,否則返回第一個表達(dá)式。

像SUM和AVG的函數(shù)忽略NULL值。

插入NULL值

在聲明為NOT NULL的列中插入NULL值時,會發(fā)生錯誤。 在默認(rèn)SQL模式下,NOT NULL列將根據(jù)數(shù)據(jù)類型插入一個默認(rèn)值。

當(dāng)字段是TIMESTAMP,AUTO_INCREMENT或虛擬列時,MariaDB會以不同方式管理NULL值。 插入在AUTO_INCREMENT列中會導(dǎo)致序列中的下一個數(shù)字插入到其位置。 在TIMESTAMP字段中,MariaDB分配當(dāng)前時間戳。 在虛擬列中,本教程后面討論的主題將分配默認(rèn)值。

UNIQUE索引可以包含許多NULL值,但是,主鍵不能為NULL。

NULL值和Alter命令

當(dāng)您使用ALTER命令修改列時,如果沒有NULL規(guī)范,MariaDB會自動分配值。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號