Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Работа с параметрами в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
7-1078860890
Ландграф Павел
2004-03-09 22:34
2004.05.02
Поскажите как узнать дату создания ветви в реестре


4-1078377183
-=[SDA]=-
2004-03-04 08:13
2004.05.02
Как узнать версию проекта???


3-1081224024
Hooch
2004-04-06 08:00
2004.05.02
SQL DMO


3-1080986096
Хэтч
2004-04-03 13:54
2004.05.02
Можно ли "привязать" Image к строке в Table ?


3-1080999062
Skif
2004-04-03 17:31
2004.05.02
Передать результат запроса в массив