我有一列有几个项目,在其中我需要计算被调用的时间,我的列表如下所示:

Table Example

Id_TR               Triggered
--------------      ------------------
A1_6547             R1:23;R2:0;R4:9000
A2_1235             R2:0;R2:100;R3:-100
A3_5436             R1:23;R2:100;R4:9000
A4_1245             R2:0;R5:150

我希望结果是这样的:

Expected Results
Triggered          Count(1)
---------------    --------
R1:23               2
R2:0                3
R2:100              2
R3:-100             1
R4:9000             2
R5:150              1

我试图做一些子字符串,但似乎找不到解决该问题的方法。有人可以帮忙吗?

最佳答案

该解决方案比CONNECT BY解决方案快X3倍

性能:每秒15K记录

with        cte (token,suffix)
            as
            (
                select      substr(triggered||';',1,instr(triggered,';')-1)     as token
                           ,substr(triggered||';',instr(triggered,';')+1)       as suffix

                from        t

                union all

                select      substr(suffix,1,instr(suffix,';')-1)     as token
                           ,substr(suffix,instr(suffix,';')+1)       as suffix

                from        cte

                where       suffix is not null

            )

 select     token,count(*)
 from       cte
 group by   token
 ;

关于sql - 列中的子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41068400/

10-10 16:49