有没有办法在没有where子句的情况下选择非空值? 我知道可以这样做
SELECT X, Y, Z
FROM T
WHERE X IS NOT NULL
但是我想知道是否有办法将null'过滤器'放在select子句中而不使用where
也许是这样的?
SELECT NOT_NULL(X), Y, Z
FROM T
泰
答案 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=NULL
为FALSE
。
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语句。它是为它创建的: - )