gpt4 book ai didi

postgresql - 如何动态地将列添加到 PostgreSQL SQL where 子句

转载 作者:行者123 更新时间:2023-12-04 01:37:45 25 4
gpt4 key购买 nike

我有一个将返回 1=1ISNULL(optoutflag,'0')=0 的子查询。现在我试图在主查询 where 子句中使用这个返回值。如果我直接追加,则会抛出错误,例如 argument of WHERE must be type Boolean, not type text。以下是我正在使用的查询。

select * 
from ev_customer_v
where (
select *
from (select case
when a.cnt = '2' then 'ISNULL(optoutflag,\'0\')=\'0\''
when a.cnt = '0' then '1=1'
end as columns
from (
select count(*) as cnt
FROM information_schema.columns
WHERE table_name='ev_customer_v'
and column_name in ('optoutflag1','deletedataflag1')
) a
) b
)

最佳答案

您可以使用下一个查询:

SELECT * 
FROM ev_customer_v
JOIN (
SELECT count(*) as cnt
FROM information_schema.columns
WHERE
table_name='ev_customer_v' AND
column_name IN ('optoutflag1','deletedataflag1')
) a ON (a.cnt = 0 OR COALESCE(optoutflag, 0) = 0);

连接表将返回 0 或 2。如果返回 0,则第一个连接条件 a.cnt = 0 将为真,并且将选择 ev_customer_v 中的所有行.在其他情况下,第一个连接条件将为假,选择将使用第二个条件 COALESCE(optoutflag, 0) = 0

关于postgresql - 如何动态地将列添加到 PostgreSQL SQL where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59980443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com