Вы также можете использовать regexp_substr
, чтобы найти строку между @
и _
следующим образом:
select REGEXP_SUBSTR(referrer,'@([^_]+)',1,1,NULL,1) referrer,
count(distinct ad_id) as Adverts,
sum(case f when 'Y' then hits else 0 end) as clicks,
sum(case f when 'N' then hits else 0 end) as views
from advert_view_hits
where ad_id in ({$id_strings})
group by REGEXP_SUBSTR(referrer,'@([^_]+)',1,1,NULL,1)
Если вы используете более старую версию, тогда вместо regexp_substr используйте комбинацию SUBSTR и INSTR следующим образом:
SUBSTR(referrer,
INSTR(referrer, '@') + 1,
DECODE(INSTR(referrer, '_', - 1),
0,
LENGTH(referrer) - INSTR(referrer, '@'),
INSTR(referrer, '_', - 1) - INSTR(referrer, '@') - 1)
)