sql 中 null 表示未知或不存在的值,擁有自己的數(shù)據(jù)類型,不能被索引,通常占用更少的存儲(chǔ)空間,在布爾表達(dá)式中為 false;空表示空字符串,擁有字符串?dāng)?shù)據(jù)類型,可以被索引,被視為 true。使用 null 表示數(shù)據(jù)未知,使用空表示數(shù)據(jù)為空字符串。
SQL 中 NULL 與 空的區(qū)別
什么是 NULL?
NULL 在 SQL 中表示一個(gè)未知或不存在的值。它不是一個(gè)空字符串、0 或任何其他值,而是專門用來表示缺少數(shù)據(jù)。
什么是空?
空表示一個(gè)包含零長度字符串或沒有字符的字符串。它不是 NULL,因?yàn)樗粋€(gè)值,盡管該值是空的。
關(guān)鍵區(qū)別
數(shù)據(jù)類型:NULL 具有其自己的數(shù)據(jù)類型,稱為 UNKNOWN。空則具有字符串?dāng)?shù)據(jù)類型。
比較:NULL 與任何值(包括 NULL)比較時(shí)始終返回 NULL。空可以與其他空值比較,并返回 TRUE。
索引:NULL 值不能被索引。空值可以被索引。
存儲(chǔ)空間:NULL 通常比空值占用更少的存儲(chǔ)空間,因?yàn)樗恍枰鎯?chǔ)實(shí)際值。
邏輯值:NULL 在布爾表達(dá)式中被視為 FALSE。空則被視為 TRUE。
何時(shí)使用 NULL 和空?
使用 NULL:當(dāng)數(shù)據(jù)完全未知或不存在時(shí)。
使用空:當(dāng)數(shù)據(jù)為空字符串或包含無意義的值時(shí)。
示例
NULL:一個(gè)客戶的地址字段可能為 NULL,因?yàn)榭蛻羯形刺峁┑刂贰?/p>
空:一個(gè)產(chǎn)品的描述字段可能為空,因?yàn)楫a(chǎn)品沒有說明。
注意:
對于 NULL 和空,一些 SQL 方言(例如 MySQL)之間存在細(xì)微差別。但是,上述關(guān)鍵區(qū)別通常適用于大多數(shù) SQL 實(shí)現(xiàn)。