2017-06-10 13 views
1

我執行MySQL查詢: -簡單的MySQL查詢: - 它有什麼問題?

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id!='1' 

它返回1分的結果: -

name : Deepak 
id: 2 
username: NULL 

這是工作的罰款。

問題是在這裏..: -

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id!='1' 
    AND username!='d' 

它返回0的結果,雖然用戶名爲MYTABLE空,但仍沒有返回的「迪派」行,因爲它在以前的查詢返回。

請你能解釋一下,爲什麼會發生?

+2

因爲NULL是它自己的事情。它不等於也不等於其他任何東西 - 甚至不是NULL! – Strawberry

+0

好的,非常感謝。 – bhpcv

+1

@MichaelO。不。雖然你可以逃脫<=> – Strawberry

回答

1

this post所示,您需要檢查用戶名「is null」或「<> 'd'」。

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id != '1' 
    AND (username IS NULL OR username != 'd') 
0

您無法查詢NULL,因爲它代表沒有值。您應該更新查詢中使用IS NULL如下:

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id != 1 
    AND (username IS NULL OR username != 'd') 
0

null不是一個值,這是其不足。將其視爲「未知」價值。無論何時在需要值的運算符中使用它(例如=),結果將爲null(未知)。例如。 「用戶的名字是什麼?我不知道,那麼它和'd'是不同的嗎?還是不知道。」如果你想處理null S,你必須與is運營商明確地這樣做:

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id!='1' 
    AND (username IS NULL OR username!='d')