Sql 选择不带WHERE子句的NOTNULL值

Sql 选择不带WHERE子句的NOTNULL值,sql,sql-server,select,null,Sql,Sql Server,Select,Null,有没有一种方法可以在没有where子句的情况下选择NOTNULL值? 我知道可以这样做 SELECT X, Y, Z FROM T WHERE X IS NOT NULL 但是我想知道是否有一种方法可以在select子句中放置空的'filter',而不使用where 也许是这样的 SELECT NOT_NULL(X), Y, Z FROM T Ty不,没有办法,如果你需要过滤掉东西,你需要一个WHERE子句。也就是说,您可以使用ISNULL或COALESCE将返回的值从null更改为其他值您

有没有一种方法可以在没有where子句的情况下选择NOTNULL值? 我知道可以这样做

SELECT X, Y, Z
FROM T
WHERE X IS NOT NULL
但是我想知道是否有一种方法可以在select子句中放置空的'filter',而不使用where

也许是这样的

SELECT NOT_NULL(X), Y, Z
FROM T

Ty

不,没有办法,如果你需要过滤掉东西,你需要一个WHERE子句。也就是说,您可以使用ISNULL或COALESCE将返回的值从null更改为其他值

您在寻找COALESCE吗

i、 e


我看不出这样做有什么合理的理由,但如果您真的不想要WHERE,可以通过JOIN子句进行筛选

SELECT X, Y, Z
FROM T
JOIN (SELECT null a) Q ON X IS NOT NULL
为什么不:)但是哪里更好呢

这里的诀窍是在JOIN
ON
条件下,如果将任何内容与
NULL
进行比较,它总是
FALSE
甚至
NULL=NULL
都是
FALSE


如果您只想检查一个值是否为NULL并在结果中以布尔值的形式返回,那么您可以使用如下方法:

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

如果您只是想筛选,那么使用WHERE语句。已为其创建:-)

是否要删除WHERE标记?为什么?
select * from t 
join 
(
select distinct x from t
) t1 on (t.x=t1.x);
SELECT CASE 
         WHEN X IS NULL THEN 0
         ELSE 1
       END AS XisNull,
       Y, 
       Z
FROM T