Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 动态避免表中的某些字符串_Postgresql - Fatal编程技术网

Postgresql 动态避免表中的某些字符串

Postgresql 动态避免表中的某些字符串,postgresql,Postgresql,我有一个包含客户详细信息的表,我需要从表中排除特定域(从电子邮件字符串中标识)中的某些电子邮件。 我该怎么做 尝试了以下内容,但没有任何想法或建议 PostgreSQL版本11 WITH CTE AS ( select 'gmail.com' as name union select 'yahoo.com' ) ,base as ( SELECT 'email ILIKE ''%'||name||'%''OR' as emails FROM CTE ) ,finals as (

我有一个包含客户详细信息的表,我需要从表中排除特定域(从电子邮件字符串中标识)中的某些电子邮件。 我该怎么做

尝试了以下内容,但没有任何想法或建议

PostgreSQL版本11

WITH CTE AS
(
select 'gmail.com' as name
union
select 'yahoo.com'
) 
,base as
(
    SELECT 'email ILIKE ''%'||name||'%''OR' as emails FROM CTE
)
,finals as
(
    SELECT string_agg(emails, '  ') as con FROM base
)
SELECT * FROm customers
WHERE  (SELECT con FROM finals )
我犯了一个错误

ERROR:  argument of WHERE must be type boolean, not type text
LINE 16: WHERE  (SELECT con FROM finals )
                ^
SQL state: 42804
Character: 242

不能构造SQL字符串并在单个SQL语句中运行它

但我认为这可以做得简单得多:

WITH cte AS (
   SELECT 'gmail.com' AS name
   UNION ALL
   SELECT 'yahoo.com'
) 
SELECT * FROM customers
WHERE email ILIKE ANY (SELECT '%' || name || '%' FROM cte);

请提供输入样本数据和预期输出。到底是什么不起作用?@S-ManI已经更新了我的问题并包含了错误消息,请在此提供任何建议。