我使用以下内容获取过去60天内访问过的网页的最大数量,我需要在网址中找到匹配的内容#abc.cfm'或' / entity /'。有没有办法用正则表达式做到这一点?以下方法可以使用,还是有更好的方法。提前致谢。
SELECT url, count(URL)
FROM tableone
WHERE ( INSTR(url, 'abc.cfm') > 0
or
INSTR(url, '/entity/') > 0 )
and VIEW_DT > sysdate - 60
group by URL
order by count(URL) desc
答案 0 :(得分:2)
只需使用like
即可。这通常比instr
快一点,比regexp_like
快:
WHERE ( url like '%abc.cfm%'
or url like '%/entity/%'
)
我在一张1.8M行的表格上进行了测试,其中700行符合标准。重复测试的大致时间是:
instr 0.9 seconds
regexp_like 15.0 seconds
like 0.6 seconds
我只会将regexp_like
用于like
过于复杂的表达式。
答案 1 :(得分:1)
尝试
regexp_like(url,'(abc.cfm|/entity/)')
而不是
( INSTR(url, 'abc.cfm') > 0
or
INSTR(url, '/entity/') > 0 )