在Oracle中插入逗号分隔值的SQL游标

在Oracle中插入逗号分隔值的SQL游标,sql,oracle,cursor,Sql,Oracle,Cursor,我有下表TTC_儿童 child_id Field_Name Sequence 1 Test E,B 2 alpha C,A,X 我还有一张桌子 TTC_儿童提取 Field_id Field_Name Sequence 1 Test1 E 2 Test2 Y 3 Test3 B 4 Test7 E 5 Test8

我有下表TTC_儿童

child_id Field_Name Sequence
1        Test       E,B
2        alpha      C,A,X
我还有一张桌子

TTC_儿童提取

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将只有一个序列(不是逗号分隔的)。我想在第三个表ttc_字段中插入字段_id,其中字段_name将使用like运算符(如'Test%',如'alpha%')插入,序列应在运算符(如'E','B')中使用

对于上述样本行,TTC_字段应具有以下数据

 S.No. Child_id Field_id
  1      1        1
  2      1        3
  3      1        4
  4      1        6
由于测试只存在于序列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;
尝试:

注意:此查询可能会很慢,而且由于缺乏规范化(数据存储为逗号分隔的文本),您几乎无法加快此查询的速度。

唯一合理的方法是规范化表。

不,不要在表中插入
分隔值。。。如果你不想未来的痛苦,这绝对是重复的。搜索将逗号分隔的字符串拆分为行。同时更新您正在使用的rdbms不要全部选中。@Matt我无法找到任何其他符合我要求的问题。@Rahul逗号分隔的数据就是我得到的,我不能更改它,因为这是第三方数据。@Sunny我知道解决方案,我告诉过你确切的搜索词,它可以让你得到你想要的值。我没有标记特定的文章,因为您标记了多个RDBMs。只标记您想要解决方案的一个。在分割字符串之后,搜索行号,你可以建立你的另一个id。光标不是必需的,也不会得到你想要的一切。如果sql server或oracle recursive cte很容易再次执行搜索并尝试解决方案。
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