2016-07-09 3 views
-1

У меня следующая таблица TTC_CHILDSQL-курсора, чтобы вставить запятую значения в Oracle

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 будет иметь только одну последовательность (не запятой разделены). Я хочу вставить field_id в третью таблицу ttc_field, где field_name будет вставлено с использованием аналогичного оператора (например, «Test%», например «alpha%»), и последовательность должна использоваться в операторе (в «E», «B»), то есть

TTC_FIELD должны иметь следующие данные для указанных выше примеров строк

S.No. Child_id Field_id 
    1  1  1 
    2  1  3 
    3  1  4 
    4  1  6 

, как существует тест только последовательности Е и В. Я подумал о помощи курсора

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

НЕТ, не вставляйте ',' разделенные значения в таблицу ... если вы не хотите будущих болей – Rahul

+0

, это, безусловно, дубликат. выполните поиск разделенной запятой строки в строках. также обновите, какие rdbms вы используете, не выбирайте их все. – Matt

+0

@Matt Я не могу найти какой-либо другой вопрос, отвечающий моим требованиям. – Sunny

ответ

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 

Примечание: этот запрос, вероятно, будет медленным, и вряд ли можно что-либо сделать, чтобы ускорить этот запрос из-за отсутствия нормализации (данные хранятся в виде текста, разделенного запятыми).
Единственный разумный метод - нормализовать ваши таблицы.

Смежные вопросы