在下面的代码中,一切都很好,但我的值与应有的值不匹配,我想了解我是否正确使用了通配符运算符,也就是说,我想使用通配符从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/

10-13 00:58