oracle两个存数组的字段,怎样实现判断他们的彼此的包含关系?

oracle数据库,一张表有两个字段A和B,A字段存的内容是“A,B,C,D,E,EE,G”,B字段存的是“A,E,G”。
有没有办法通过sql语句实现判断字段A包含B中的全部子项?

1、正常思路是将B字段拆分为行,然后与A字段进行匹配,返回的行数与拆分的行数相等即满足条件
2、使用正则覆盖,不过有个前提:B字段中不能有重复,如不存在类似:“A,E,G,A”这样的数据:

WITH t0 AS ( SELECT 'A,B,C,D,E,EE,G' a, 'A,E,G' b FROM dual )
    , t1 AS ( -- 构建A字段完全状态,构建B字段的正则覆盖样式
        SELECT a, b, ',' || a || ',' c, ',' || REPLACE( b, ',', ',|,' ) || ',' d FROM t0 )
    , t AS ( -- 进行正则匹配和各字段长度计数
        SELECT a, b, LENGTH( b ) bl, c, LENGTH( c ) cl, d, LENGTH( d ) dl, regexp_replace( c, d, '' ) e, LENGTH( regexp_replace( c, d, '' ) ) el FROM t1 )
SELECT * FROM t WHERE ( cl - el ) = ( dl - ( dl - 2 - bl ) / 2 ); -- 筛选出目标数据

with中的子查询 t 的结果:

img

最终查询结果:

img

需要先split拆分,然后相互求交集来判断