在下面的代码中,一切都很好,但我的值与应有的值不匹配,我想了解我是否正确使用了通配符运算符,也就是说,我想使用通配符从post_evar10列中提取多个值。当我一次使用一个通配符时,我得到正确的结果。
where (post_evar10 like 'states:%' or
post_evar10 like 'www:' or
post_evar10 like 'local:%' or
post_evar10 like 'learn:%')
create table temp.MS_Adobe_Discover1
Select
concat(month(date_time),'/',day(date_time),'/', year(date_time)) as Date,
post_evar10,
count(page_event) as Pageviews,
count(distinct concat(post_visid_high, post_visid_low)) as UniqueVisitors
from adobe_hits
where (post_evar10 like 'states:%' or
post_evar10 like 'www:' or
post_evar10 like 'local:%' or
post_evar10 like 'learn:%')
and page_event like '0'
and exclude_hit like '0'
and hit_source not in (5,7,8,9)
group by Date, post_evar10;
样本结果:
请查看图像。enter image description here
最佳答案
您还可以使用left,在某些系统和某些数据集上,它可能会更快---像这样:
where (left(post_evar10,7) = 'states:' or
post_evar10 = 'www:' or
post_evar10,6) = 'local:' or
post_evar10,6) = 'learn:')
如果您不关心
:
中的states:
,则可以解决。快一点 where (left(post_evar10,6) in ('states','local:','learn:') or
post_evar10 = 'www:' )
关于mysql - 如何在单个查询中查询多个通配符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57512685/