Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.02.2021, 19:35
|
|||
|---|---|---|---|
Помогите составить рекурсивный запрос |
|||
|
#18+
Рекурсивные запросы использовать приходится редко, поэтому многие нюансы я забываю или упускаю из вида. Помогите найти, что именно сейчас я сделал не так? Задача простая — разделить строку по разделителю (пробелу). В простейшем варианте такой пример дает вроде бы правильные результаты: Код: plsql 1. 2. 3. 4. 5. 6. 7. Рабочий пример несколько более сложный: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. В принципе этот запрос так же отрабатывает корректно. Но если попробовать применить его к рабочему набору данных (около сотни строк, в которых может быть до пары десятков подстрок), как запрос "зависает" (за несколько минут не завершается). Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. Подозреваю, что причина в том, что я неправильно описал условия соединения, не указав Y и RN. Но не соображу, как их указывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.02.2021, 21:33
|
|||
|---|---|---|---|
Помогите составить рекурсивный запрос |
|||
|
#18+
Не нужна тут рекурсия: LATERAL/CROSS APPLY. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2021, 09:53
|
|||
|---|---|---|---|
Помогите составить рекурсивный запрос |
|||
|
#18+
Моя ошибка, все время забываю уточнять версию Oracle 10g. Попутно я нашел решения через ODCI*List или XML, но они какие-то избыточные и сложные. connect by и instr выглядят более оптимальными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2021, 11:10
|
|||
|---|---|---|---|
Помогите составить рекурсивный запрос |
|||
|
#18+
Alibek B. Моя ошибка, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2021, 11:54
|
|||
|---|---|---|---|
Помогите составить рекурсивный запрос |
|||
|
#18+
Спасибо. Строки 18 и 19 я и сам догадался добавить, но у меня получалась зацикленность. А про трюк с dbms_random.value я не догадался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2021, 11:58
|
|||
|---|---|---|---|
Помогите составить рекурсивный запрос |
|||
|
#18+
Финальный рабочий запрос (исполняется доли секунды): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Добавить финальный пробел к строке оказалось проще и быстрее, чем учитывать единственное/последнее значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1880457]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 288ms |
| total: | 428ms |

| 0 / 0 |
