with preparation as(
select a,
b,
c,
regexp_like(a, 'example1|example2') as example
from database_X
)
select *
from preparation
where example
我有一个类似上面的查询,它似乎得到了正确的结果。然而,我不明白在where子句中如何只使用列名。有人能解释一下它是如何工作的吗?或者请我参阅任何解释逻辑的文章或东西?
WHERE
子句需要一个布尔条件,而regexp_like
返回一个布尔值,基本上就是这样。即,任何产生布尔值的表达式都对WHERE
有效,例如:
select *
from table
where true
或
select *
from table
where 1=1
REGEXP_LIKE返回布尔值,因此您可以使用"示例";在where条件下。它与是相同的查询(但更短(
with preparation as(
select a,
b,
c,
regexp_like(a, 'example1|example2') as example
from database_X
)
select *
from preparation
where example is true