只是好奇,如果我可以运行下面作为一个单一的SQL选择语句,而不使用过程语言(过程,函数,匿名块)。
with cte as (select ' and 1=1' as col1)
select 'test'
where 2=2
and case when 1=1 then (select col1 from cte) end;
字符串
我得到下面的错误
ERROR: argument of AND must be type boolean, not type text
LINE 4: and case when 1=1 then (select col1 from cte) end;
型
这显然意味着CASE
语句的结果被假定为文本值而不是实际条件。
我想要这样做的原因是我想在DeltaLake中运行查询,我不能使用过程语言。只有Select语句是可能的。CTE
中的col1
可以是不同输入的不同AND
条件。
我正在PostgreSQL
中尝试此查询。
1条答案
按热度按时间p4tfgftt1#
要在不使用过程语言的情况下实现所需的结果,可以按如下方式重写查询:
字符串