Главная страница
    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.035 c
3-1081419821
Шоломицкий
2004-04-08 14:23
2004.05.02
Помогите!


3-1081258516
Julia_
2004-04-06 17:35
2004.05.02
Сообщение об ошибке


14-1081278369
Игорь Шевченко
2004-04-06 23:06
2004.05.02
Упражение из книжки Таненбаума (Современные операционные системы)


14-1081224495
Vlad Oshin
2004-04-06 08:08
2004.05.02
Уважаемые Питерцы! Помогите с жильем...


11-1066635514
Ал
2003-10-20 11:38
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский