Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизРабота с параметрами в SQL. Найти похожие ветки
← →
Гриша1 (2004-04-01 13:54) [0]Могу ли я в SQL сравнить параметр с константой?
Например,
select * from ....
where :PARAM1="ABCD"
← →
Лысый (2004-04-01 13:59) [1]Нафига. Параметр подразумевает, что меняется в процессе выполнения программы. Тебе же проще просто сделать
select * from ....
where [field]="ABCD"
← →
Гриша1 (2004-04-01 14:07) [2]Ты не понял, я передаю разные значения PARAM1 и хочу, чтобы при определенном значение PARAM1 условие выполнялось всегда.
Вот так :
select * from ....
where [field]=:PARAM1 or "ABCD=:PARAM1
Чтобы при ABCD выводились все значения, а при других включался фильтр по полю.
← →
Курдль © (2004-04-01 14:13) [3]А не проще достигать той же цели двумя разными запросами?
Или Вам лень 2 раза написатьQuery.SQL.Text := ...
?
← →
Гриша1 (2004-04-01 14:20) [4]То Курдль: Ты зришь прямо в корень. Молодец. Лень, и потом придется не два раза написать. У меня несколько таких запросов в программе, и в нескольких местах динамически формируется SQL.Text;
← →
bushmen © (2004-04-01 14:29) [5]>и в нескольких местах динамически формируется SQL.Text
Если у тебя уже формируется запрос динамически, вот и дописывай туда. А запросов таких видов, как тебе надо нет
← →
Курдль © (2004-04-01 14:30) [6]Тарды сравнивай и не парься над гнусными мыслями об оптимизации проги и т.п. вредностями - главное, шоб тебе было хорошо!
Кстати, а ты, прежде чем спросить, сам запрос-то пробовал на реальной БД? Или это тоже лень - проще на форуме все разузнать...
← →
Гриша1 (2004-04-01 14:44) [7]То Курдль. Конечно, пробовал, похоже он вообще игнорирует это условие. Результат такой же как и без второго операнда OR.
To BushMen. 100% нельзя так сделать? Ты это знаешь наверняка или просто так думаешь.
← →
Johnmen © (2004-04-01 14:45) [8]>Могу ли я в SQL сравнить параметр с константой?
Можно, разрешаю :)
← →
Гриша1 (2004-04-01 14:47) [9]To BushMen - Извини, не так выразился, динамически формируется не сам запроc, а значения параметров.
← →
Курдль © (2004-04-01 14:58) [10]
> Конечно, пробовал, похоже он вообще игнорирует это условие.
> Результат такой же как и без второго операнда OR.
Ок! Давай разбираться, что за СУБД, как объявлены параметры, как передаются и т.п.
← →
Sergey_Masloff (2004-04-01 15:03) [11]Гриша1 (01.04.04 13:54)
>Могу ли я в SQL сравнить параметр с константой?
>Например,
>select * from ....
>where :PARAM1="ABCD"
например
select * from ....
where "ABCD"=:PARAM1
можешь
← →
Johnmen © (2004-04-01 15:04) [12]> Конечно, пробовал, похоже он вообще игнорирует это условие.
> Результат такой же как и без второго операнда OR.
>при определенном значение PARAM1 условие выполнялось всегда.
Видимо тебе надо AND, судя по всему...
← →
Гриша1 (2004-04-01 15:11) [13]Да не заморачивайся, Курдль. Намутю в коде что-нибудь.
Но если очень интересно, то запрос примерно такой.
СУБД Firebird.
Компонент TIBQuery.
select * from my_table
where F1=:PREZERV3 or F1="" or :PREZERV="ABCD"
order by F2,F3
Хочу сделать так, чтобы выводились записи с пустым полем F1, c F1=параметр, и при передаче особого значения параметра(ABCD) - все записи. Реально?
← →
Курдль © (2004-04-01 15:19) [14]С пустым таким образом - не выйдет. Не сможешь передать параметру NULL
← →
bushmen © (2004-04-01 15:24) [15]>Не сможешь передать параметру NULL
Как я понимаю, у него пустые значения не NULL, а если и NULL, то можно передавать, например, 0, а в самой процедуре уже обработать
← →
Sergey_Masloff (2004-04-01 15:34) [16]Курдль © (01.04.04 15:19) [14]
>С пустым таким образом - не выйдет. Не сможешь передать >параметру NULL
Откуда такая уверенность?
ParamByName("XXX").Clear(); не помогает?
← →
Гриша1 (2004-04-01 15:37) [17]Пустые значения не NULL, а строки "". Параметр PREZERV1 никогда равным NULL не бывает.
Результат все время равносилен следуещему
select * from my_table
where F1=:PREZERV3 or F1=""
order by F2,F3
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c