mysql中 IS NULL 與 =''有什么區別?
原文:https://mp.weixin.qq.com/s/dHXA8B7Q6HLJbyQWJbhQfA
這個區別在於IS NULL表示一個字段建表時,設置的是允許為空。插入值時,沒有插入這個值。
NULL表示no known,即不知道,所以,它可以是任意值。
所以使用 =null是查不到值的,因為=不知道,還是不知道。
如果要使用,需要加上
set ANSI_NULLS off
注:這句話表示不遵從 SQL-92 標准。= null 和IS NULL被認為是等效的。
用IS NULL查詢,表示是:要查建表中,設置的字段可以為空,並且插入數據時,該字段未賦值的記錄。

注:建表時設name可以為空。

注:插入記錄時,name未被賦值。

注:查詢name is null的結果。
而name =’’是什么意思呢?
它的意思,是查詢賦值的,並且賦值為空格(可以是一個空格,也可以是多個空格)的記錄的條數。和null不一樣。上面student表中,第3條即為name為空格的記錄,所以用IS NULL是查不出來的。
另外,如果一條記錄name字段為null,那么用not like 也是查不出來的。看下面這條語句:
SELECT * from student WHERE id=2 and name not like '%張三%';
查詢結果為空記錄。所以,not like 只對設置name的記錄有效。

