我遇到一個問題,當我嘗試選擇某個列的值為NULL的行時,它將返回一個空集。但是,當我查看phpMyAdmin中的表時,對于大多數(shù)行,它表示為null。我的查詢看起來像這樣:SELECT pid FROM planets WHERE userid = NULL每次都清空。據(jù)說有很多地方都確保不會將其存儲為“ NULL”或“ null”,而不是實際值,還有一個地方試圖僅查找空格(userid = ' '),但沒有一個起作用。有人建議不要使用MyISAM并使用innoDB,因為MyISAM無法存儲null。我將表切換到innoDB,但是現(xiàn)在我覺得問題可能是由于它可能轉(zhuǎn)換表的方式實際上實際上仍然不是null。我想這樣做,而不必將表重新創(chuàng)建為innoDB或其他任何形式,但是如果需要的話,我當然可以嘗試一下。
4 回答

慕蓋茨4494581
TA貢獻1850條經(jīng)驗 獲得超11個贊
給出所有答案后,我想補充一點。我也遇到過同樣的問題。
為什么查詢失?。磕阌?,
SELECT pid FROM planets WHERE userid = NULL;
這不會給您預(yù)期的結(jié)果,因為來自mysql doc
在SQL中,與其他任何值(甚至是NULL)相比,NULL值從不為真。包含NULL的表達式始終會產(chǎn)生NULL值,除非文檔中針對表達式中涉及的運算符和函數(shù)另有說明。
強調(diào)我的。
要搜索為的列值NULL,您不能使用expr = NULL測試。以下語句不返回任何行,因為expr = NULL對于任何表達式都不是真的
解
SELECT pid FROM planets WHERE userid IS NULL;
要進行測試NULL,請使用IS NULL和IS NOT NULL運算符。
運算符IS NULL測試值是否為NULL。
操作符IS NOT NULL測試值是否不是NULL。
添加回答
舉報
0/150
提交
取消