我讀到null無法與null進行比較,結果始終爲false。比較加入期間的空值
在下面的鏈接中,我可以比較2個空值並返回行。
CREATE TABLE user (id varchar(50), banstatus varchar(100));
INSERT INTO user (id, banstatus) VALUES ('1', '1');
INSERT INTO user values ('2', 'NULL');
CREATE TABLE banstatus (id varchar(50), texti varchar(100));
INSERT INTO banstatus VALUES('1', 'Banned');
Insert into banstatus values ('NULL' , 'NULL');
select * from user as u
join banstatus as b on u.banstatus=b.id
http://sqlfiddle.com/#!9/33f25/1/0
那麼,什麼是零點左右比較正確的說法?
'NULL' 字符串(如你)是不一樣的NULL http://sqlfiddle.com/#! 9/0f1cce/1/0即使第二個現在是'NULL'非空字符串,這個小提琴只顯示返回1個記錄。所以要回答,「那麼關於空值比較的正確說法是什麼?」你讀過什麼。 – xQbert
考慮這些case語句:http://sqlfiddle.com/#!9/0f1cce/7/1'如果banstatus爲null,則'其空'結束爲isNull, case banstatus = null then'NULL = NULL' else'NOT Null = Null'end as NullCantCompare, case banstatus <> null then'NULL <> NULL'else'NOT NULL <> NULL'end as NullNECompare, case banstatus <=> null then'NULL <=> Null'else 'NOT NULL <=> NULL'end with NULLSafeCompare' – xQbert
爲什麼用戶的ID值是'VARCHAR(50)'?這似乎是錯誤的。通常,您使用「INT AUTO_INCREMENT PRIMARY KEY NOT NULL」類型來連續生成這些數字。 – tadman