BigQuery 查询适用于多个“喜欢”但不适用于“in”

Dys*_*i_A 0 sql sql-in google-bigquery sql-like

我想隔离一些具有特定标题的电子邮件。我可以在 where 子句中使用与 OR 连接的多个“like”。这给了我一些结果。但是,如果我尝试在 ('____'、'____' 等) 中执行____,代码会突然返回任何内容。

这是行不通的。

select DATE_TRUNC(DATE(send_time,"America/Los_Angeles"), week(monday)) as week,
status, 
settings_title,
sum(emails_sent) as emails_sent,
sum(report_summary_opens) as report_summary_opens, 
sum(report_summary_unique_opens) as report_summary_unique_opens, 
sum(report_summary_subscriber_clicks) as report_summary_subscriber_clicks
from mailchimp.campaigns_view
where status = 'sent' 
and settings_title in ('%_LL_%', '%_IC_%', '%_AC_%', '%_CC_%', '%_PC_%')
group by 1,2,3
order by 1 desc
Run Code Online (Sandbox Code Playgroud)

然而,这确实有效。

select DATE_TRUNC(DATE(send_time,"America/Los_Angeles"), week(monday)) as week,
status, 
settings_title,
sum(emails_sent) as emails_sent,
sum(report_summary_opens) as report_summary_opens, 
sum(report_summary_unique_opens) as report_summary_unique_opens, 
sum(report_summary_subscriber_clicks) as report_summary_subscriber_clicks
from mailchimp.campaigns_view
where status = 'sent' 
and (settings_title like '%_LL_%'
or settings_title like '%_IC_%'
or settings_title like '%_AC_%'
or settings_title like '%_CC_%'
or settings_title like '%_PC_%')
group by 1,2,3
order by 1 desc
Run Code Online (Sandbox Code Playgroud)

我已经尝试在我的“from”中包含一个子查询,以消除所有空的settings_title。有什么想法为什么这不起作用吗?我是否遗漏了一些小语法错误?

谢谢您的帮助!

Fel*_*ffa 9

%符号仅适用于LIKE. 因为IN这只是平等。也试试REGEXP_CONTAINS吧。

如:

SELECT REGEXP_CONTAINS("abcdefg", '(xxx|zzz|yyy|cd)')
Run Code Online (Sandbox Code Playgroud)