Я пытаюсь разбить строку электронной почты, разделенную запятой, на отдельные идентификаторы электронной почты, разделенные запятыми, но каждый идентификатор электронной почты заключен внутри единой кавычки.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 записей. Может ли один предложить мне лучший подход для этого ...
Я предполагаю, что ваш запрос является медленным из-за hierarhical запроса (подключение с помощью), а не регулярное выражение синтаксический. Можете ли вы повторно написать свой запрос, не используя соединение? –