2013-08-27 3 views
1

Я пытаюсь разбить строку электронной почты, разделенную запятой, на отдельные идентификаторы электронной почты, разделенные запятыми, но каждый идентификатор электронной почты заключен внутри единой кавычки.REGEXP_SUBSTR Занимает больше времени для выполнения в Oracle

мой вклад'[email protected],[email protected],[email protected],[email protected]'

Мой вывод должен быть:'[email protected]','[email protected]','[email protected]','[email protected]'

Я собираюсь использовать выходной строки выше в оракула запросе, где состояние как ...

Where EmailId's in ('[email protected]','[email protected]','[email protected]','[email protected]'); 

Я использую следующий код для этого

WHERE EMAIL IN 
        (REGEXP_SUBSTR('[email protected],[email protected],[email protected],[email protected]' ,'[^,]+', 1, LEVEL)) 
CONNECT BY LEVEL <= LENGTH('[email protected],[email protected],[email protected],[email protected]') - LENGTH(REPLACE('[email protected],[email protected],[email protected],[email protected]' , ',', '')) +1; 

Но вышеуказанный запрос занимает 60 секунд, чтобы вернуть только 16 записей. Может ли один предложить мне лучший подход для этого ...

+0

Я предполагаю, что ваш запрос является медленным из-за hierarhical запроса (подключение с помощью), а не регулярное выражение синтаксический. Можете ли вы повторно написать свой запрос, не используя соединение? –

ответ

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