有没有办法在没有 where 子句的情况下选择非空值?我知道可以这样
SELECT X, Y, Z
FROM T
WHERE X IS NOT NULL
但我想知道是否有办法在不使用 where 的情况下将 null 'filter' 放在 select 子句中
也许是这样的?
SELECT NOT_NULL(X), Y, Z
FROM T
泰
有没有办法在没有 where 子句的情况下选择非空值?我知道可以这样
SELECT X, Y, Z
FROM T
WHERE X IS NOT NULL
但我想知道是否有办法在不使用 where 的情况下将 null 'filter' 放在 select 子句中
也许是这样的?
SELECT NOT_NULL(X), Y, Z
FROM T
泰
不,没有办法,如果你需要过滤掉东西,你需要一个 WHERE 子句。也就是说,您可以使用 ISNULL 或 COALESCE 将返回的值从 null 更改为其他值
您在寻找 COALESCE 吗?
IE
SELECT COALESCE(HasBananas, 'No') FROM Sometable
我看不出这样做的合理理由,但如果您真的不想要 WHERE,则可以通过 JOIN 子句进行过滤。
SELECT X, Y, Z
FROM T
JOIN (SELECT null a) Q ON X IS NOT NULL
为什么不 :) 但是 WHERE 好多了。
这里的技巧是在 JOINON
条件下,如果你将任何东西与NULL
它进行比较,它总是FALSE
even NULL=NULL
is FALSE
。
select * from t
join
(
select distinct x from t
) t1 on (t.x=t1.x);
如果您只想检查一个值是否为 NULL 并在结果中将其作为布尔值返回,那么您可以使用如下内容:
SELECT CASE
WHEN X IS NULL THEN 0
ELSE 1
END AS XisNull,
Y,
Z
FROM T
如果您只想过滤,请使用 WHERE 语句。它是为它创建的:-)