Страница 1 из 1
Непонятка с IN
Добавлено: 02 мар 2006, 12:33
Wontar
Привет всем.
Вот тут попал в непонятную историю с запросиком.
Код: Выделить всё
SELECT
CODE,
STDTIME,
DESCRIPTION
FROM
OPERATIONS
WHERE
CODE IN (:ops)
ORDER BY
CODE
Code=VarChar(7) PK.
Нужно выбрать операций которые есть в списке. (типа. 100L00,C657L00).
Однако FB не дает прописать в параметр строку длиной >7.
Как подправить запрос или как правильно составить подскажите пож-та.
Олег.
Добавлено: 02 мар 2006, 12:44
Ivan_Pisarevsky
почитай пример в факе.
... where

ps Containing '~'||code||'~' ...
Добавлено: 02 мар 2006, 12:47
kdv
и где у людей логика...
ну ПОЧЕМУ сервер должен думать, что переданный в виде СТРОКИ ПАРАМЕТР на самом деле является ПЕРЕЧНЕМ ЗНАЧЕНИЙ для сравнения?
Добавлено: 02 мар 2006, 13:25
Wontar
ну ПОЧЕМУ сервер должен думать, что переданный в виде СТРОКИ ПАРАМЕТР на самом деле является ПЕРЕЧНЕМ ЗНАЧЕНИЙ для сравнения?
1. Я считал что когда стоит IN то в скобках подразумевается список.
2. Разве параветры не заменяются Delphi на строки? По идее конечный вариант представляет собой
разве это не список ?
Добавлено: 02 мар 2006, 13:33
kdv
1. Я считал что когда стоит IN то в скобках подразумевается список.
почему? потому что тебе так показалось? Параметр имеет конкретный тип.
Допустим, ты попался на строке (обычно так числа любят перечислять). Но. Почему ты решил, что разделителем "параметров" в строке является запятая?

потому что это "разделитель" в SQL?
where field in (1, 2, 3...)
where field in (:param1, :param2, :param3...)
p.s. вопросы риторические, можно не отвечать.
Добавлено: 02 мар 2006, 13:49
Ivan_Pisarevsky
Добавлено: 02 мар 2006, 13:53
Wontar
Почему ты решил, что разделителем "параметров" в строке является запятая? потому что это "разделитель" в SQL?
Потому что прочел в "Firebird руководство разработчика баз данных". Точнее там есть пример использвания IN.
зы. риторический вопрос к kdv и ивану: А можно ответить без наездов ? Может не все такие профи ?
ззы. За ссылку спасибо. изучим.
зззы. решил проблему. просто стал давать передачу не по параметру, а чисто перестройкой запроса.
Добавлено: 02 мар 2006, 14:02
Ivan_Pisarevsky
А можно ответить без наездов ?
Где в моем первом посте наезд? Я тебя отослал строго туда где есть ответ на твой вопрос, спокойно и без наездов. По ходу дела фак читать ты не желаешь, а смысл каждый раз озвучивать фак в форуме? КДВ старался сделал сайт, где все по полочкам разложено, и тем не менее каждый раз новички требуют чтоб им еще раз растолковывали написаное, извини, конечно, но это неинтересно.
Удачи!

Добавлено: 02 мар 2006, 14:13
Wontar
2Ivan. Проблема не в том, что я не хочу читать ФАК. Я его давно прочитал. Если присмотреться то он довольно большой, а каждый человек формирует вопрос-ответ по своему, поэтому поиск не слишком эффективный.
Я вас понимаю. Надоели люди спрашивающие одно и тоже, но разве это когда-нибудь изменится ?
Для этого пожалуй нужно прикрепить каждый вопрос-ответ к отдельному посту в форуме и обвесить линками.
Добавлено: 02 мар 2006, 14:16
kdv
отому что прочел в "Firebird руководство разработчика баз данных". Точнее там есть пример использвания IN
примеры есть везде. только не такие, как ты привел.
Если же ты в книге Хелен нашел пример where field in (:param), то скажи страницу, я издателю передам, чтобы ошибку исправили.
А можно ответить без наездов ? Может не все такие профи ?
основная проблема интернета в том, что вопрошающий не видит эмоций отвечающего. поэтому любой удивленный, ироничный или саркастический ответ, не оформленный смайликами, воспринимается как наезд
я не наезжал, а только риторически восклицал. Потому что, когда в 50-тый раз отвечаешь на один и тот же вопрос, становится... скучно, что ли

Добавлено: 02 мар 2006, 14:27
Ivan_Pisarevsky
Если присмотреться то он довольно большой, а каждый человек формирует вопрос-ответ по своему, поэтому поиск не слишком эффективный.
На самом деле моего первого поста вполне достаточно, чтоб даже в ФАК не заглядывать

там только надо догадаться (посмотрев на '~'), что в параметр надо запихнуть строку с цифирками разделенными тильдами и все сразу заработает.
А ты просто поторопился, решив что на тебя наезжают, присмотрись, первый же пост достаточен для решения твоей проблемы
