【发布时间】:2021-05-09 01:57:01
【问题描述】:
我的查询看起来基本上像
WITH DATA AS(
SELECT fields
FROM table
WHERE [many conditions]
AND NOT field1 = 'string'
)
SELECT foo,
bar,
CASE
WHEN field1 IS NULL THEN 'other_string'
[other cases]
END
FROM data
还有很多其他的东西,但这是不起作用的核心部分。这应该给我很多结果。但是,该特定情况的结果为零;如果我删除其余的查询并基本上只运行这个,它只是一个空表。
AND NOT field1 = 'string' 似乎过滤掉了 field1 为“字符串”的所有行,但也过滤掉了 field1 为空的所有行。如果 field1 为 null,则 field1 = 'string' 应该评估为 false(因为 null 不等于任何值),因此 NOT field1 = 'string' 应该评估 true 并且这些行应该在查询中 - 对吗?
实际上不确定我正在使用的 Redash 前端后面运行的是什么 sql 实现,但我可以确定它是否相关。
【问题讨论】:
-
因为
NOT NULL-->NULL. -
您有 WITH
DATA(大写),但您的 SELECT 来自data(小写)。您能否确认这不是导致零结果的不区分大小写的问题?SELECT * from DATA LIMIT 1基本上有用吗? -
@tester 是的,改变大小写没有任何作用(即使不匹配,查询也可以正常工作)。
-
也许可以试试
AND field != 'string'? -
@GordonLinoff 我不明白你的评论;据我所知,此查询中没有任何 NOT NULL 。有些东西评估为 NOT FALSE。有什么原因它可能最终变成 NOT NULL 吗?