我有下表TTC_CHILD
child_id Field_Name Sequence
1 Test E,B
2 alpha C,A,X
我有另一张桌子
TTC_CHILD_EXTRACT
Field_id Field_Name Sequence
1 Test1 E
2 Test2 Y
3 Test3 B
4 Test7 E
5 Test8 Z
6 Test9 B
TTC_CHILD_EXTRACT只有一个序列(不是以逗号分隔)。我想在第3个表ttc_field中插入field_id,其中field_name将使用like运算符插入(如'Test%',如'alpha%'),序列应在运算符中使用(在'E','B'),即
TTC_FIELD应具有上述样本行的以下数据
S.No. Child_id Field_id
1 1 1
2 1 3
3 1 4
4 1 6
因为Test只存在于序列E和B中。我想过使用游标
DECLARE
CURSOR TTC_CHILD_CURSOR IS
SELECT CHILD_ID, FIELD_NAME,SEQUENCE FROM TTC_CHILD;
BEGIN
FOR child IN TTC_CHILD_CURSOR LOOP
// here I want to loop the ttc_child table one by one and get the field id from ttc_child_extract and insert that in TTC_Field
END LOOP;
COMMIT;
END;
答案 0 :(得分:0)
尝试:
select rownum as "S.No", c.child_id, e.field_id
from TTC_CHILD c
join TTC_CHILD_EXTRACT e
on c.sequence like e.sequence || ',%'
or c.sequence like '%,' || e.sequence || ',%'
or c.sequence like '%,' || e.sequence
or c.sequence like e.sequence
注意:此查询可能会很慢,并且由于缺少规范化(数据存储为逗号分隔文本),您几乎无法采取任何措施来加快此查询速度。
唯一合理的方法是规范化表格。