2013-01-10 50 views
3

有沒有方法可以在沒有where子句的情況下選擇非空值? 我知道它可以像這樣SELECT NOT NULL無WHERE子句的值

SELECT X, Y, Z 
FROM T 
WHERE X IS NOT NULL 

但要做我想知道是否有把空「過濾器」 SELECT子句中不使用其中

也許是這樣的一種方式?

SELECT NOT_NULL(X), Y, Z 
FROM T 

+4

你想刪除WHERE標記?爲什麼? –

回答

8

沒有,也沒辦法,如果你需要過濾的東西了,你需要一個WHERE子句。也就是說,您可以使用ISNULL或COALESCE將null返回的值更改爲其他值。

4

您是否在尋找COALESCE?

SELECT COALESCE(HasBananas, 'No') FROM Sometable 
0

我不能看到一個健全的理由這樣做,但你可以通過JOIN子句過濾器,如果你真的不想要一個WHERE。

SELECT X, Y, Z 
FROM T 
JOIN (SELECT null a) Q ON X IS NOT NULL 
0

爲什麼不:)但在哪裏好多了。

這裏的竅門是在JOIN ON條件:如果你有NULL比較的東西,它總是FALSE甚至NULL=NULLFALSE

SQLFiddle demo

select * from t 
join 
(
select distinct x from t 
) t1 on (t.x=t1.x); 
0

如果你只是要檢查,如果值爲NULL,並返回它作爲你的結果布爾值,那麼你可以使用這樣的事情:

SELECT CASE 
     WHEN X IS NULL THEN 0 
     ELSE 1 
     END AS XisNull, 
     Y, 
     Z 
FROM T 

如果您只是想過濾,然後使用WHERE語句。它已創建它:-)