Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Вниз

Условие в SQL запросе: or <--> and   Найти похожие ветки 

 
GHT   (2008-03-23 18:30) [0]

Подскажите, пожалуйста:
хочу дополнить sql запрос условием (в поле DataOtk пусто или равно 01.01.2008), - нужно ли заключать в скобки? как правиль но написать:  
+" AND DataOtk IS NULL OR DataOtk=:MDat"
и как явным образом в запросе прописать дату? вместо MDat?


 
Сергей М. ©   (2008-03-23 18:54) [1]

Все зависит от конкретной СУБД, каковую ты обозначить не удосужился.
Но скобки, как правило, нужны.


 
DrPass ©   (2008-03-23 23:14) [2]


> нужно ли заключать в скобки

А ты попробуй. Не бойся, он тебя не укусит и винт не отформатирует, даже если ошибешься

>  как явным образом в запросе прописать дату? вместо MDat?

Зависит от региональных настроек твоего сервера.


 
Anatoly Podgoretsky ©   (2008-03-24 00:38) [3]

И надо и нет, зависит от сервера и от логики.


 
Германн ©   (2008-03-24 00:44) [4]


> Anatoly Podgoretsky ©   (24.03.08 00:38) [3]

Если ты про скобки, то чаще всего надо. Но, как правило, лишь самому программисту для "наглядности". При необходимости последующего изменения кода это полезно.


 
Anatoly Podgoretsky ©   (2008-03-24 00:53) [5]

> Германн  (24.03.2008 00:44:04)  [4]

Не скажи, например - a and b or c, это или (a and b) or c, или a and (b or c)
результаты то разные


 
Германн ©   (2008-03-24 01:03) [6]


> Anatoly Podgoretsky ©   (24.03.08 00:53) [5]

Я же не о таких вариантах, когда обязательны скобки. Я о таких, когда они и не нужны. Но просто наглядно показывают отдельные сравнения.


 
GHT   (2008-03-24 14:46) [7]

Использую я: ADO + Access
Запрос у меня заканчивается:
... where NM=:NM"+
и как, соответственно, мне дополнить его:
+" AND DataOtk IS NULL OR DataOtk=:MDat"
???


 
GHT   (2008-03-24 14:49) [8]

Раньше было:
" where DataOtk IS NULL OR DataOtk=:MDat"
я и горя не знал,
а теперь как на языке SQL написать:
... where (NM=:NM) AND (DataOtk IS NULL OR DataOtk=:MDat)"?


 
Ega23 ©   (2008-03-24 15:04) [9]

Не знаю как в Access, для MSSQL я бы написал

Declare @DataOtk datetime;
Set @DataOtk=:MDat;
Select ....  where (NM=:NM) and (@DataOtk is null or DataOtk=@DataOtk)


 
sniknik ©   (2008-03-24 15:15) [10]

> Не знаю как в Access, для MSSQL я бы написал
не поддерживает пакетов... не получится.

можно так например, аналог
Select ....  where (NM=:NM) and (:DatCheck=1 or DataOtk=:DataOtk)
смысл думаю понятен.


 
sniknik ©   (2008-03-24 15:23) [11]

+ ошибка наверное будет... при определении параметра. если будет надо пробел поставить -> :DatCheck =1


 
Ega23 ©   (2008-03-24 15:52) [12]


> sniknik ©   (24.03.08 15:23) [11]


А что параметром считается? То, что после "равно" ("больше", "меньше") и пробела?


 
sniknik ©   (2008-03-24 15:58) [13]

> А что параметром считается? То, что после "равно" ("больше", "меньше") и пробела?
а вот и не уверен..., потому и написал "наверное", а может и поймет...
а с пробелом наверняка правильно определит.


 
Anatoly Podgoretsky ©   (2008-03-24 20:29) [14]

Акцесс штучка такая, я бы не рисковал а написал бы так A = :P
Пробелы до и после, иначе не всегда сработает.


 
Ega23 ©   (2008-03-24 22:04) [15]


> Пробелы до и после, иначе не всегда сработает.


вот оно там как-то крайне странно срабатывает...
Вообще есть где-нибудь чёткое описание того, что будет являеться параметром при ParamCheck=True?


 
sniknik ©   (2008-03-24 22:41) [16]

зачем описание? если хочется просто посмотри код парсера. там не очень много кода.

разделителями имен являются
function NameDelimiter: Boolean;
begin
 Result := CurChar in [" ", ",", ";", ")", #13, #10];
end;

т.е. "=1" в конце, если без пробела (/другого символа из списка), точно уже, присоеденит к имени параметра, а вот перед ":" пробел необязателен.
естественно это только для ADO (что смотрел), для другого парсер может быть иным.


 
sniknik ©   (2008-03-24 22:49) [17]

> а вот перед ":" пробел необязателен.
это не из списка следует, а из условия в остальном коде.

кстати оттуда же следует (не знал пока не посмотрел :), что путь можно записывать в запросе так "...С::\Dir\File.ras...", а я зачем-то автоопределение всегда выключал в таком случае и создавал их ручками, ради того чтобы нужное оставить...
век живи два учись...


 
Ega23 ©   (2008-03-24 22:57) [18]


> зачем описание? если хочется просто посмотри код парсера.


Так в том-то и дело: мало-ли что они завтра в коде поменяют?
А вот когда документально закреплено - тогда другое дело.
А код парсера я и сам посмотреть могу, то как раз понятно



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.043 c
6-1185196401
Newfrost
2007-07-23 17:13
2008.04.20
idHTTP и проблемы с кодировкой


2-1206435144
lead-in
2008-03-25 11:52
2008.04.20
количество процессов


15-1204741755
Steep
2008-03-05 21:29
2008.04.20
Линукс и сотел...


15-1204721767
Petr V. Abramov
2008-03-05 15:56
2008.04.20
Позаботились об отечественном IT


2-1206450578
Wold
2008-03-25 16:09
2008.04.20
TTreeNode, Expand





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