|
|
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, подскажите ,пожалуйста, где допущена ошибка? Есть регулярное выражение, но при использовании его в функции Код: plsql 1. не происходит никакого результата. Ниже код который я использую. Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 10:55 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, если бы вы описали, что именно ожидаете получить - помощь придет намного быстрее. И вас не смешают с говном за неумение задавать вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:04 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Lary Denis, в столбце code содержатся числа вида: 1.1 1.2 1.11 и с помощью регулярного выражения они должны приводится к виду 1.01 1.02 1.11. Но при использовании данного кода этого не выходит, поэтому я и обратился сюда за помощью т.к не могу понять в чем ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:15 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem[/src] не происходит никакого результата. Ниже код который я использую. Код: plsql 1. Боюсь, что оракель не понимает эту конструкцию. Попробуйте так: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:20 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousБоюсь, что оракель не понимает эту конструкцию. Попробуйте так: '\.(\d)(\D|$)', '\.0\1' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:23 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousViacheslav.dem[/src] не происходит никакого результата. Ниже код который я использую. Код: plsql 1. Боюсь, что оракель не понимает эту конструкцию. Попробуйте так: Код: plsql 1. Попробовал. Выдает результат в виде: 1.01 1.02 1.011 2.11. Дело в том, что когда 1-м символом стоит единица, в числе 1.11 оно приписывает ноль. Не подскажите как изменить регулярное выражение чтобы стал результат вида 1.11? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:35 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Также число вида 1.1.2 приводит к виду 1.012. А нужен вид 1.01.02. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:52 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem 1.011 Ммм? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:53 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:56 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
В другой ветке, автор писал "Количество вложений которое будет не известно.". То что выше - не отработает для "2.11.1.11.1.1.111.2.3.4", например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 12:03 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousViacheslav.dem 1.011 Ммм? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вот мой результат запроса: Код: plsql 1. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 12:08 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Да, количество вложений которое будет неизвестно. Прошу прощения что не упомянул сразу об этом сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 12:10 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Фанат Elic-aВ другой ветке, автор писал "Количество вложений которое будет не известно.". То что выше - не отработает для "2.11.1.11.1.1.111.2.3.4", например. 1. с очевидностью надо добавить в строку замены \2 2. Специально для фанатов Виталия: по доке https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm как раз отработает :) По факту - отработает через одно вхождение, но можно повторить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 12:23 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
При неизвестном кол-ве одной формулой не обойдёшься, т.к. замена идёт не по экземпляру, а по подходящей маске - маска должна учитывать кол-во точек в данном случае, которое, как следствие, должно быть заранее известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 12:38 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
FogelПри неизвестном кол-ве одной формулой не обойдёшься Неверно. См. доку, в конце концов - ссылку я привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:24 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousFogelПри неизвестном кол-ве одной формулой не обойдёшься Неверно. См. доку, в конце концов - ссылку я привел. покажи пример выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:50 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Fogelandrey_anonymousпропущено... Неверно. См. доку, в конце концов - ссылку я привел. покажи пример выполнения. Чукча не читатель? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:59 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Ну и применительно к задаче: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:08 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousНу и применительно к задаче: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. о чём и речь, где здесь одна формула? 2 формулы FogelПри неизвестном кол-ве одной формулой не обойдёшься ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:24 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Fogelо чём и речь, где здесь одна формула? 2 формулы FogelПри неизвестном кол-ве одной формулой не обойдёшься ... Да ну? Об этом ли речь? FogelПри неизвестном кол-ве одной формулой не обойдёшься ... маска должна учитывать кол-во точек в данном случае, которое, как следствие, должно быть заранее известно. Ну и в каком месте маска учитывает количество точек, если речь "о чем"? Речь на самом деле о другом: andrey_anonymousФанат Elic-aВ другой ветке, автор писал "Количество вложений которое будет не известно.". То что выше - не отработает для "2.11.1.11.1.1.111.2.3.4", например. 1. с очевидностью надо добавить в строку замены \2 2. Специально для фанатов Виталия: по доке https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm как раз отработает :) По факту - отработает через одно вхождение, но можно повторить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:33 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous... Речь на самом деле о другом ... ага, на самом деле тебе лучше знать, что я написал. можно хоть войну и мир любой регуляркой бесконечно вложенной распарсить. я написал про одну формулу. на этом и надо было остановиться без косноязычных пояснений. кол-во точек, кстати, учитывается. только не в абсолютном выражении, а в признаке чётный/нечётный. по чётному кол-ву достаточно одной формулы. при нечётном - не получается одинаковой маски, одна точка выпадает, поэтому два прохода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:56 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Fogelпо чётному кол-ву достаточно одной формулы. Покажи, сказочник :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:58 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousFogelпо чётному кол-ву достаточно одной формулы. Покажи, сказочник :) ну ты в ударе сегодня. я не настолько крут, чтобы спускаться с небес на землю. в этом я ошибся - не работает, как я думал. но про одну формулу - это было про одну формулу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 17:18 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Fogelно про одну формулу - это было про одну формулу. Так и формула одна - присмотрись. Два вызова - потому что oracle не умеет конструкции, позволяющие маску не захватывать . А потому хвостовую точку повторно не читает=> фейлит маску на непосредственно следующим за обнаруженной последовательности ("не хватает" лидирующей точки). Отсюда два вызова. Если этот недостаток устранить, то ты пролетаешь и с самым слабым утверждением про "одну формулу": Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 17:33 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousЫ? Кстати, недостаток разделителей можно устранить, не сломав решение задачи "одной формулой": Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Недостаток - сильно увеличивает размер промежуточной валидной строки и может вылезти за "габарит" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 17:50 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousFogelно про одну формулу - это было про одну формулу. Так и формула одна - присмотрись. Два вызова - потому что oracle не умеет конструкции, позволяющие маску не захватывать . А потому хвостовую точку повторно не читает=> фейлит маску на непосредственно следующим за обнаруженной последовательности ("не хватает" лидирующей точки). Отсюда два вызова. Если этот недостаток устранить, то ты пролетаешь и с самым слабым утверждением про "одну формулу": Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Ы? хитрец какой. я тоже написал, что слева 0 вылез, а если тримить слева - это уже вторая формула пошла. и доводы повторяешь, что нечётная точка выбивается из маски. короче, то же самое другими словами. спор уже ни о чём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 18:32 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Извините, а не могли бы Вы подсказать каким образом еще можно поставить ноль перед 1-м символом? Сам пытаюсь - не выходит. Т.е 01.01 02.22 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 11:11 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 11:27 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Шутник Ореховский, Спасибо большое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 11:35 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Подскажите, мне надо сделать сортировку order by. Можно ли преобразовать строку в число с разделителем "." в формате 09? Сделал сортировку до 1-й точки Код: plsql 1. как сделать сортировку если n-ое количество точек. Вариант выше работает хорошо, но можно ли сделать сортировку не подставляя нули как описано выше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 10:23 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, не совсем понятно, чем Вам мешает "подстановка нулей"? покажите тестовые данные, и результат который ожидаете зы я в регулярках двоечник (пока токо учусь) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 12:41 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Stax, Есть таблица с кодом (varchar), при сортировке по коду, оракл выводит вот так: Код: sql 1. 2. 3. 4. 5. А нужно: Код: sql 1. 2. 3. 4. 5. n-ое количество уровней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 13:29 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, Код: plsql 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 13:32 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, 10 можно заменить на максимальную длину varchar +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 13:33 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.demn-ое количество уровней. Сорри, не дочитал, мой вариант не подойдет =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 13:40 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, не больше 9999 (4 цифры) влоб для цифр Код: 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. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 14:26 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Stax, Спасибо, но между разделителям может присутствовать максимум 2 цифры (т.е маска 09). По вашей таблице в выделенной записи должно быть 1.22.33 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 16:26 |
|
||
|
Функция REGEXP_REPLACE
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, если максимум две цифры, то достаточно regexp_replace(regexp_replace(s,'(\d+)','000\1'),'0*(\d{ 2 })','\1') ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 16:55 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1885024]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 401ms |

| 0 / 0 |
