没有WHERE子句的SELECT NOT NULL值

时间:2013-01-10 11:58:58

标签: sql sql-server select null

有没有办法在没有where子句的情况下选择非空值? 我知道可以这样做

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

但是我想知道是否有办法将null'过滤器'放在select子句中而不使用where

也许是这样的?

SELECT NOT_NULL(X), Y, Z
FROM T

5 个答案:

答案 0 :(得分:9)

不,没有办法,如果你需要过滤东西,你需要一个WHERE子句。也就是说,您可以使用ISNULL或COALESCE

将从null返回的值更改为其他值

答案 1 :(得分:4)

你在寻找COALESCE吗?

SELECT COALESCE(HasBananas, 'No') FROM Sometable

答案 2 :(得分:0)

我无法看到这样做的理智,但如果你真的不想要WHERE,你可以通过JOIN子句进行过滤。

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

答案 3 :(得分:0)

为什么不:)但是哪里好多了。

此处的技巧是在JOIN ON条件下,如果您将任何内容与NULL进行比较,则始终为FALSE,即使NULL=NULLFALSE

SQLFiddle demo

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

答案 4 :(得分:0)

如果您只想检查某个值是否为NULL并在结果中将其作为布尔值返回,那么您可以使用以下内容:

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

如果您只想过滤,请使用WHERE语句。它是为它创建的: - )