|
|
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
Всем привет. Может кто-то наведет на правильную мысль. Есть такая конструкция: Код: plsql 1. 2. 3. 4. 5. 6. В которую передается строка вида: Код: sql 1. то названия из справочника региона подтягиваются правильно, согласно классификации reg_id Но, если передать строку вида: Код: sql 1. то отработка происходит, по 2, 4 и 24 ! Почему так происходит, может есть вариант как можно четко организовать правильную передачу ,в чем загвоздка? Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 20:32 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
А мозг включить? Код: plsql 1. превращаетcя для d1.reg_id = 2 в Код: plsql 1. и результат = TRUE. Для d1.reg_id = 4 в Код: plsql 1. и результат = TRUE. Для d1.reg_id = 24 в Код: plsql 1. и результат тоже TRUE. Проверять надо: Код: plsql 1. А лучше: Код: plsql 1. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 20:57 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
Не заметил версию 10.2, так-что замени REGEXP_COUNT на REGEXP_REPLACE + LENGTH. Надеюсь сообразишь. А если гоняешься за миллисекундами, то замени REGEXPы на SUBSTR + INSTR. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 21:43 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
SY, Спасибо. Но я не понял почему для Код: plsql 1. когда поступает строка именно 24 , а она режется на 2, затем 4 и 24. И почему лучше использовать: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 21:46 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
Sheriffua, Для тех кто в т-34, LIKE '%2%' означает поверку на наличие двойки в любой позиции, так что резльтат будет "да" для любого значения opv.text_value в котором присутствует двойкa. SY. P.S. Забыл что у тебя разделитeль дробной части зпт а не тчк как у мeня. И вообще, чтобы избежать NLS проблем используй другoй разделитeль в opv.text_value, например, pipe вкупе с: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 21:55 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
SheriffuaИ почему лучше использовать: d1.reg_id может быть проиндексирован. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 22:00 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
SYSheriffua, Для тех кто в т-34, LIKE '%2%' означает поверку на наличие двойки в любой позиции , так что резльтат будет "да" для любого значения opv.text_value в котором присутствует двойкa. SY. P.S. Забыл что у тебя разделитeль дробной части зпт а не тчк как у мeня. И вообще, чтобы избежать NLS проблем используй другoй разделитeль в opv.text_value, например, pipe вкупе с: Код: plsql 1. ))) Еще раз - строка opv.text_value = 24 , но разбор происходит как 2 и 4 и 24... этим выражением: Код: plsql 1. 2. 3. 4. 5. 6. Т.е. в строку Код: sql 1. почему происходит преобразование в 2, затем в 4, и затем в 24? Это getStringVal так преобразует или что смотреть чтобы понять отчего происходит такой разбор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 08:15 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
Sheriffuaчто смотреть чтобы понять отчего происходит такой разбор? 20818315 - просто снимись с ручника, там Соломон всё подробнейше разжевал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 09:09 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
Sheriffuaпочему происходит преобразование в 2, затем в 4, и затем в 24? Это getStringVal так преобразует или что смотреть чтобы понять отчего происходит такой разбор? Да причем тут getStringVal??? Я кажется ясно обьяснил что без обрамления разделитeлями LIKE '%' || TO_CHAR (d1.reg_id) || '%' выдаст "да" если d1.reg_id является частью одного из чисел в opv.text_value: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 14:48 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
SY, спасибо за подробное разъяснение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 16:02 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
Sheriffuaспасибо за подробное разъяснение. Но я советую: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 16:27 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
SYSheriffuaспасибо за подробное разъяснение. Но я советую: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. SY. Спасибо за совет с применением регулярных выражений. Если несложно, то в двух словах, чем он лучше LIKE? , который ты привел в своем первом сообщении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2017, 08:17 |
|
||
|
Ошибка при разборе getStringVal
|
|||
|---|---|---|---|
|
#18+
SheriffuaЕсли несложно, то в двух словах, чем он лучше LIKE? , который ты привел в своем первом сообщении? Я уже обьяснял: d1.reg_id может быть проиндексирован. Код: 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. 75. 76. 77. 78. 79. И если даже если индекса нет, то он может понадобиться позже когда, например, обьем данных возрастет и TABLE ACCESS FULL станет слишком медленным. В случае с LIKE придется переписывать код а с IN все прозрачно и он подхватит созданный индекс. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2017, 13:28 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1885209]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
147ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 449ms |

| 0 / 0 |
