Главная страница
    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.034 c
1-1081848714
SergP
2004-04-13 13:31
2004.05.02
"Засунуть" ProgressBar в StatusBar


7-1078839316
kamerad
2004-03-09 16:35
2004.05.02
CD ROM


14-1081706466
smb
2004-04-11 22:01
2004.05.02
кто-нибудь знает?


3-1081251223
Multy
2004-04-06 15:33
2004.05.02
Киньте ссылки как работать в Delphi с MySQL


3-1081194388
Mirror
2004-04-05 23:46
2004.05.02
DBGrid





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