|
|
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Всем привет. Помогите с такой засадой. Надо в процедуре выбирать данные в зависимости от параметра (строка). Если параметр пустой (не NULL, просто пустая строка) - выбирать все, если в параметре что-то есть, выбирать по маске. Пытаюсь сделать простой селект (пока ещё не в процедуре, просто в ibexpert-е): Код: sql 1. 2. 3. фигня какая-то. Если name пустой - всё выбирается. Если что-то есть (например, 'A%') - высыпается ошибка: Код: plaintext 1. 2. 3. 4. Не могу понять, что с чем не совместимо? :name имеет тип VARCHAR(31). Колонка symbol_name - тоже. То же самое для целочисленных значений работает норм Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 17:39 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thНадо в процедуре выбирать данные в зависимости от параметра (строка). Обоснуй выделенное. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 17:47 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Hello, 13th! You wrote on 4 июля 2014 г. 17:50:51: 13th> where upper(symbol_name) like case coalesce(:name, '') when '' then upper(symbol_name) else upper(:name) end бессмысленный набор букв Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 17:52 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Хочу весь SQL вынести из cpp-кода. Не удобно писать, отлаживать. Хочу уйти от методики сборки SQL-выражений на стороне клиент - считаю это плохим стилем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:18 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thВсем привет. Помогите с такой засадой. Надо в процедуре выбирать данные в зависимости от параметра (строка). Если параметр пустой (не NULL, просто пустая строка) - выбирать все, если в параметре что-то есть, выбирать по маске. Ну так выбирай по маске всегда (заменяй пустую строку параметра на '%' перед селектом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:19 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, ну, я раньше на T_SQL писал. Если это - бессмыслица, покажи как надо, о великий мастер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:19 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thМимопроходящий, ну, я раньше на T_SQL писал. Если это - бессмыслица, покажи как надо, о великий мастер. и там нет логических операций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:22 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7m, проблема, как раз, не с пустой строкой, а с заполненной. Почитай внимательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:24 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Hello, 13th! You wrote on 4 июля 2014 г. 18:25:40: 13th> ну, я раньше на T_SQL писал. и для T-SQL это бессмыслица. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:27 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7mи там нет логических операций? они там есть. Ты клонишь к тому, что бы написать if длина_строки < 1 then шаблон='%' Select ... where SYMBOL_NAME LIKE шаблон. но у меня выборки не только по строковым значениям. по целым, по даблам, по датам/времени. Хочу написать единообразный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:28 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thХочу весь SQL вынести из cpp-кода. Не удобно писать, отлаживать. Хочу уйти от методики сборки SQL-выражений на стороне клиент - считаю это плохим стилем. Перехоти. Удобства это не прибавит. Стиль как стиль. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:30 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thХочу написать единообразный код тогда пиши так: Код: sql 1. 2. 3. 4. Что я там выше сказал про удобство и простоту?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:35 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thm7m, проблема, как раз, не с пустой строкой, а с заполненной. Почитай внимательно. у меня не хватает терпения вчитываться в вот такое Код: sql 1. 13thm7mи там нет логических операций? они там есть. Ты клонишь к тому, что бы написать if длина_строки < 1 then шаблон='%' Select ... where SYMBOL_NAME LIKE шаблон. но у меня выборки не только по строковым значениям. по целым, по даблам, по датам/времени. Хочу написать единообразный код. таки да или Код: sql 1. 2. но тогда записи с SYMBOL_NAME равными NULL не попадут в выборку или Код: sql 1. впрочем и первый и второй вариант гарантирует не использование индексов и соответственно тормоза при выборке из большой таблицы (если конечно не будет дополнительных условий выборки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:37 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПерехоти. Удобства это не прибавит. Стиль как стиль. Проекта моего ты в глаза не видел. Даже не знаешь, сколько у меня таких процедур получится - 4 или 400. Даже не знаешь, в результате чего такое решение было принято и как обосновывалось. И так дерзко: "перехоти". Достаточно самоуверенно. Или обоснуй, или не засирай в мой тред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:40 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Код: sql 1. 2. 3. 4. Что я там выше сказал про удобство и простоту?.. Ух ты, а я то и не догадался... А как это будет выглядеть для 6 параметров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:41 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7m, Если тебе удобнее, пусть будет так: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:45 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thИли обоснуй, или не засирай в мой тред. Обосновываю: читай внимательно сообщение m&m. Особенно внимательно - в месте про использование индексов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:46 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7mвпрочем и первый и второй вариант гарантирует не использование индексов и соответственно тормоза при выборке из большой таблицы (если конечно не будет дополнительных условий выборки) Поясни: оператор LIKE или CASE отрубает индексы? Я в IB не большой спец, но в MS сервере что LIKE, что CASE вполне работал по индексам ещё в версии 6.0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:48 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thв MS сервере что LIKE, что CASE вполне работал по индексам ещё в версии 6.0. Врёшь. Покажи план твоего запроса из предыдущего поста в MS SQL. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:52 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thm7mвпрочем и первый и второй вариант гарантирует не использование индексов и соответственно тормоза при выборке из большой таблицы (если конечно не будет дополнительных условий выборки) Поясни: оператор LIKE или CASE отрубает индексы? Я в IB не большой спец, но в MS сервере что LIKE, что CASE вполне работал по индексам ещё в версии 6.0. LIKE с параметром индекс "отрубает" LIKE с константой 'AA%' равносилен STARTING WITH и использует индекс (впрочем я в этом не совсем уверен, а искать или пробовать лень) про остальное (CASE, MSSQL) не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:56 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7mLIKE с параметром индекс "отрубает" LIKE с константой 'AA%' равносилен STARTING WITH и использует индекс (впрочем я в этом не совсем уверен, а искать или пробовать лень) Блин, засада. Ладно, спасибо, с этим понятно, переделаю запрос в STARTING WITH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 19:00 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Модератор: Предупреждение. Если позволишь себе тут пИсаться в таком стиле - лучше сразу иди на другой форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 19:09 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thm7mLIKE с параметром индекс "отрубает" LIKE с константой 'AA%' равносилен STARTING WITH и использует индекс (впрочем я в этом не совсем уверен, а искать или пробовать лень) Блин, засада. Ладно, спасибо, с этим понятно, переделаю запрос в STARTING WITH. Ну тогда и заботиться о пустой строке не надо будет ибо Код: sql 1. должен работать и при param='' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 19:11 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7mдолжен работать и при param='' Но результат будет сильно зависеть от версии сервера и, возможно, коллейта. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 19:14 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7mдолжен работать и при param='' Да, работает, я уже проверил. Кстати, выражение Код: sql 1. 2. 3. 4. 5. всёж использует индекс: Код: plaintext 1. Так что не всё пропало (: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 19:22 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thКстати, выражение всёж использует индекс: Один. А должно бы - два. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 19:28 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
А зачем два, если у меня в одном индексе все нужные мне поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 19:43 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Затем, что индексы используются вот так , а не так как ты себе воображаешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 20:24 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thвсёж использует индекс: Код: plaintext 1. Так что не всё пропало (: Если у тебя индекс по полям symbol_name, symbol то в данном случае будет использоваться только первый сегмент индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 21:06 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Блин, какое же убожество. Тяжко после MS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 23:39 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13th, взрослый дядя, а ... не нажил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2014, 00:35 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
kdvвзрослый дядя, а ... не нажил. "Взрослый" и "старый" - совсем не синонимы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2014, 00:42 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thБлин, какое же убожество. Тяжко после MS.Уж извини за прямоту, только мозги, деформированные MS, не в состоянии воспринять нового. Я пишу на разных SQL, и не только я в этом форуме, потому оставь этот тон, это даже не смешно, а только раздражает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 13:49 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
WildSeryУж извини за прямоту, только мозги, деформированные MS, не в состоянии воспринять нового. Я пишу на разных SQL, и не только я в этом форуме, потому оставь этот тон, это даже не смешно, а только раздражает. Привычка к хорошему - это не деформация мозгов. Да, после мерса человеку не приятно садиться в жигули. И тот факт, что другим приходится на них ездить - не делает езду более приятной. Но тебя-то почему это раздражает? Ты, что ли этот FireBird написал? Он для тебя родной? Я сам писал на T-SQL, на Oracle, на SQLBase. У оракла, безусловно, самый богатый язык. У MS-а - самые лучшие тулзы, взаимодействие с ПО, простота для начинающих. Но такого отстоя, с которым я сейчас вожусь - даже в Gupta SQLBase 1998 года выпуска не было. Спотыкаться приходится - на ровном месте. Почему по одному индексу нельзя сделать выборку (имеется ввиду мой пример)? Зачем эти Suspend-ы? Обходятся ж без них остальные? Почему из процедуры нельзя 10 рекордсетов получить? Половина примеров из хелпа (читал раздел по хинтам) - реально не работает, зависимость от версий - черезмерная. Я обидеть никого не хотел (ну, может, кроме тех, кто не по теме тред засирает), хотел узнать, как сделать базовые вещи, а в ответ, какие-то, не понятно на что обидевшиеся люди начинают учить жизни. Есть что сказать по делу - буду благодарен помощи. Хотите объяснить, какой великолепный продукт FB - вместо того, что бы говном тут кидаться, покажите как можно легко и изящно решить типовую задачу. Если это действительно будет легко и эффективно, я признаю свою ошибку, а пока вы тут все выглядите как стая студентов, которым сказали, что Delphi - отстой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 16:28 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
голосую: убить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 16:44 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
Модератор: Предупреждение было. Теперь остудись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 16:51 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
13thПривычка к хорошему - это не деформация мозгов. Да, после мерса человеку не приятно садиться в жигули. И тот факт, что другим приходится на них ездить - не делает езду более приятной. Но тебя-то почему это раздражает? Ты, что ли этот FireBird написал? Он для тебя родной? И хоть я отношение к ФБ имею только как пользователь, но для меня он в некотором смысле родной 13thЯ сам писал на T-SQL, на Oracle, на SQLBase. У оракла, безусловно, самый богатый язык. У MS-а - самые лучшие тулзы, взаимодействие с ПО, простота для начинающих. Но такого отстоя, с которым я сейчас вожусь - даже в Gupta SQLBase 1998 года выпуска не было. Не знаю, не писал, ну за исключением Oracle но это было давно (если память не отшибло, то во времена жизни её 4-й версии) и уже ничего не помню 13thПочему по одному индексу нельзя сделать выборку (имеется ввиду мой пример)? По этому поводу тебе дали ссылку вот здесь 16262124 13thЗачем эти Suspend-ы? Обходятся ж без них остальные? Почему из процедуры нельзя 10 рекордсетов получить? Не знаю, у меня мозги деформированы ФБ и как-то даже вопроса такого не возникало 13thПоловина примеров из хелпа (читал раздел по хинтам) - реально не работает Ну приведи примеры, может там действительно неправильно написано, а может и что-то другое 13th, зависимость от версий - черезмерная. Я этого не заметил, начиналась разработка с IB 6.0 сейчас разработка идет на FB 2.5 (заказчики работают с FB 1.5, 2.0, 2.5) и проблем с "зависимость от версий" нет (ну естественно в рамках разумного) 13thЕсть что сказать по делу - буду благодарен помощи. Хотите объяснить, какой великолепный продукт FB - вместо того, что бы говном тут кидаться, покажите как можно легко и изящно решить типовую задачу. Если это действительно будет легко и эффективно, я признаю свою ошибку, а пока вы тут все выглядите как стая студентов, которым сказали, что Delphi - отстой. Ну так спрашивай.... зы. что такое типовая задача не знаю, С точки зрения других "насколько легко и изящно" решаю свою задачу тоже не знаю. С моей точки зрения легко, даже очень легко. Про изящность моих подходов я лучше промолчу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 17:17 |
|
||
|
Помогите строчку сравнить
|
|||
|---|---|---|---|
|
#18+
m7m13thПоловина примеров из хелпа (читал раздел по хинтам) - реально не работает Ну приведи примеры, может там действительно неправильно написано, а может и что-то другое Заодно чисто из любопытства - из какого именно хэлпа. Потому что у Firebird нет ни хэлпа (только документация), ни хинтов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 17:21 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1563482]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 432ms |

| 0 / 0 |
