2017-10-14 57 views
0

我嘗試僅選擇表中的行,其中包含name_durchgefuehrt,name_abgelehntname_offen列中的值以及id。多個WHERE不爲空查詢返回空行

但是查詢給出了所有的列,而不僅僅是這些值。

這裏是我的查詢:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE 
    name_durchgefuehrt IS NOT NULL 
    AND name_abgelehnt IS NOT NULL 
    AND name_offen IS NOT NULL 

結果:

enter image description here


編輯:

是的,我知道這是你最簡單的問題但我對這個VA有一個錯誤的理解如果沒有,我想我必須這樣做。

無論如何謝謝你的所有答案。

+1

太棒了。你有問題嗎?請參閱[爲什麼我應該提供一個用於我認爲是非常簡單的SQL查詢的MCVE](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-看起來對我來說是一個非常簡單的sql查詢) – Strawberry

+2

查詢給你你究竟要求什麼。問題是什麼? – alroc

+1

NULL與空字符串不同。 –

回答

2

NULL不是''(空字符串),這是一個特殊的狀態,您可以使用IS NULL進行測試。

<> ''將排除雙方NULL''

所以:

SELECT id,name_durchgefuehrt,name_abgelehnt,name_offen 
FROM dashboard 
WHERE 
    name_durchgefuehrt <> '' 
    AND 
    name_abgelehnt <> '' 
    AND 
    name_offen <> '' 
+1

呃。爲什麼「COALESCE」? 'name_durchgefuehrt <>'''不會帶回空值或空字符串。 –

+1

@MartinSmith該死的,你是對的,完全忘了,最近用了'COALESCE',最近更新了u_u – Blag

+0

謝謝你的回答!這適用於我! – Ck2513

1

你必須檢查你的價值觀是不是空字符串也,它`沒必要零點

1

我想要注意的是,一個字符串也可以由空格組成。所以,這擺脫的空間更一般的方法是:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE TRIM(name_durchgefuehrt) <> '' AND 
     TRIM(name_abgelehnt) <> '' AND 
     TRIM(name_offen) <> '' IS NOT NULL; 

因爲有隱藏人物,你可能需要使用正則表達式。例如,如果您有一組空格字符:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE name_durchgefuehrt regexp '[^[:space]]' AND 
     name_abgelehnt regexp '[^[:space]]' AND 
     name_offen regexp '[^[:space]]';