3 回答

TA貢獻(xiàn)1719條經(jīng)驗 獲得超6個贊
通過使用,NULL您可以區(qū)分“不輸入數(shù)據(jù)”和“不輸入數(shù)據(jù)”。
更多區(qū)別:
一個LENGTH的NULL就是NULL,一個LENGTH空字符串的是0。
NULLs在空字符串之前排序。
COUNT(message)將計算空字符串,但不計算NULLs
您可以使用綁定變量搜索空字符串,但不能搜索NULL。該查詢:
SELECT *
FROM mytable
WHERE mytext = ?
無論您從客戶端傳遞的值如何,都永遠(yuǎn)不會匹配NULLin mytext。要匹配NULLs,您必須使用其他查詢:
SELECT *
FROM mytable
WHERE mytext IS NULL

TA貢獻(xiàn)1891條經(jīng)驗 獲得超3個贊
如果您計劃切換數(shù)據(jù)庫,則要考慮的一件事是Oracle不支持空字符串。它們會自動轉(zhuǎn)換為NULL,您無法使用諸如這樣的子句查詢它們WHERE somefield = ''。

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊
要記住的一件事是,NULL可能會使您的代碼路徑困難得多。例如,在Python中,大多數(shù)數(shù)據(jù)庫適配器/ ORM都映射NULL到None。
這樣的事情:
print "Hello, %(title)s %(firstname) %(lastname)!" % databaserow
可能會導(dǎo)致“您好,沒有Joe Doe!” 為了避免這種情況,您需要類似以下代碼的內(nèi)容:
if databaserow.title:
print "Hello, %(title)s %(firstname) %(lastname)!" % databaserow
else:
print "Hello, %(firstname) %(lastname)!" % databaserow
這會使事情變得更加復(fù)雜。
添加回答
舉報