Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-1078768612
Alex870
2004-03-08 20:56
2004.05.02
Перехват событий iexplore.exe


14-1081329838
BeginEnd
2004-04-07 13:23
2004.05.02
Тема эта, конечно же, звучала...


1-1082098039
sapsi
2004-04-16 10:47
2004.05.02
Размеры и положения окна в OpenDialog


3-1081343562
wild_arg
2004-04-07 17:12
2004.05.02
Удаление записей из dbf


11-1066754725
Neon
2003-10-21 20:45
2004.05.02
Как форма может принимать сообщения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский