Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
Здравствуйте ! Есть функция. Вот ее фрагмент: Код: sql 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. При точном сравнении (@SearchFlag = 1) все работает как часики А вот если задать частичное сравнение, то ни LIKE, ни CHARINDEX не "пашут". Результат всегда false, хотя при заданных параметрах (тех самых, что возвращают Ok если задан @SearchFlag = 1), запись найтись обязана В чем косяк ? Спасибо за ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2019, 20:05 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
MsGuns, Условия как-то не одинаковы для переменной IF @SearchColumn = 'TB_Number' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2019, 20:44 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
TaPaK,"TB_Number" - имя колонки View. Функция используется для поиска в этом вью. Задается образец и имя столбца, где искать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2019, 21:01 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
MsGunsЗадается образец и имя столбца, где искатьMsGuns Код: sql 1. 2. Это, типа, поиск в колонке, наименование которой задано @TB_Number? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2019, 21:36 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
invm, @SearchSample - параметр функции, в котором ей передается образец для поиска (строка) @TB_Number - имя локальной переменной, в которое FETCH запишет содержимое поля TB_Number очередной строки НД Данная фраза означает: найти вхождение подстроки, заданной @SearchSample, в строку, записанную FETCH NEXT из поля датасета TB_Number в локальную переменную @TB_Number Тут все верно, иначе не работала бы первая часть логики (там, где @SearchFlag = 1), а она-то как раз и работает ! Имя колонки, где искать, задается в параметре @SearchColumn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2019, 22:07 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
MsGunsВ чем косяк ?У вас ELSE к чему относится, к IF @TB_Number = @SearchSample ? Не жалейте BEGIN ... END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2019, 22:53 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
alexeyvgMsGunsВ чем косяк ?У вас ELSE к чему относится, к IF @TB_Number = @SearchSample ? Не жалейте BEGIN ... END Огромное спасибо. После того, как добавил BEGIN .. END заработали все 3 варианта. Тема закрыта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 13:13 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
MsGuns, А вы не пытались решить вашу задачу без курсоров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 13:24 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
a_voroninMsGuns, А вы не пытались решить вашу задачу без курсоров? А зачем ему решать эту задачу, если задача стоит решить задачу. За думать программистам, пишущим на курсорах, не доплачивают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 13:46 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
a_voroninMsGuns, А вы не пытались решить вашу задачу без курсоров? Суть проблемы в том, что на странице (ASP.NET NVC) отображается только один лист из списка, выбранного по некоторым критериям (в данном случае - территориальным) и отсортированного по колонке, указанной пользователем. На странице имеется навигация по листам (вперед, назад, перейти к листу). То есть имеется некий "формат" общего списка, отображаемого на клиенте в определенном порядке. Поиск записи нужен в двух случаях: 1) при добавлении нового абонента пользователь должен увидеть страницу, где новый абонент будет виден, а для этого нужен поиск по ID (для этого есть UDF, подобная этой, но там поиск по ID и все много проще. 2) Для реализации функции поиска по любой из колонок (именно эта UDF). После нахождения записи списка (абонента) на клиенте должна отобразиться соотв.страница. Постраничная "резка" выбранного и отсортированного списка выполняется на SQL-сервере ХП, но в эту ХП нужно "дать" номер листа. Вот его-то и определяет приведенная здесь UDF. Которая сначала выбирает весь список, сортирует его, затем ищет искомое, "перебирая" листы. Когда лист найден, он передается ХП (в одном из методов модели MVC) и полученный лист передается Razor, который "собирает" из записей страницу и отправляет ее на клиент браузеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 13:50 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
Руслан Дамировичa_voroninMsGuns, А вы не пытались решить вашу задачу без курсоров? А зачем ему решать эту задачу, если задача стоит решить задачу. За думать программистам, пишущим на курсорах, не доплачивают. Ваше замечание в данном случае совершенно не к месту. Мне никто не платит и не "доплачивает". Алгоритмы выдумываю сам и реализую тоже сам. А что они не оптимальны, в этом у меня нет сомнений в большинстве случаев. Если можно решить описанную выше задачу без курсора, буду весьма обязан, если кто-то выскажет подходящие соображения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 13:54 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
MsGunsa_voroninMsGuns, А вы не пытались решить вашу задачу без курсоров? Суть проблемы в том, что на странице (ASP.NET NVC) отображается только один лист из списка, выбранного по некоторым критериям (в данном случае - территориальным) и отсортированного по колонке, указанной пользователем. На странице имеется навигация по листам (вперед, назад, перейти к листу). То есть имеется некий "формат" общего списка, отображаемого на клиенте в определенном порядке. Поиск записи нужен в двух случаях: 1) при добавлении нового абонента пользователь должен увидеть страницу, где новый абонент будет виден, а для этого нужен поиск по ID (для этого есть UDF, подобная этой, но там поиск по ID и все много проще. 2) Для реализации функции поиска по любой из колонок (именно эта UDF). После нахождения записи списка (абонента) на клиенте должна отобразиться соотв.страница. Постраничная "резка" выбранного и отсортированного списка выполняется на SQL-сервере ХП, но в эту ХП нужно "дать" номер листа. Вот его-то и определяет приведенная здесь UDF. Которая сначала выбирает весь список, сортирует его, затем ищет искомое, "перебирая" листы. Когда лист найден, он передается ХП (в одном из методов модели MVC) и полученный лист передается Razor, который "собирает" из записей страницу и отправляет ее на клиент браузеру. Поправка: вместо "Когда лист найден, он передается ХП" следует читать "Когда лист найден, его номер передается ХП" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 13:57 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
Я отдаю себе отчет, что при поиске (по ID и по "маске") сервер ДВАЖДЫ делает одну и ту работу, выбирая нужные записи в нужном порядке, но "фишка" в том, что функционал поиска добавлен позднее, а менять модель MVC штука не тривиальная. Поэтому к уже имеющейся "постройке" был добавлен новый "флигелек" :) А сервер - он на то и сервер, чтобы работать (шутка, конечно, но в каждой шутке..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 14:03 |
|
||
|
Не работает частичное сравнение в теле UDF
|
|||
|---|---|---|---|
|
#18+
Если что, вот сама хранимка: Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=98&tid=1687642]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 384ms |

| 0 / 0 |
