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

Вниз

Как правильно сформировать SQL запрос   Найти похожие ветки 

 
alkin   (2006-05-04 08:40) [0]

Как правильно сформировать SQL запрос
Делаю так:
//------------------------------------
  DataModule.FindQuery.SQL.Clear;
  DataModule.FindQuery.SQL.Add("SELECT *");
  DataModule.FindQuery.SQL.Add("FROM Base");
  DataModule.FindQuery.SQL.Add("WHERE Field1 LIKE :SearchWord");
  DataModule.FindQuery.Parameters.ParamByName("SearchWord").Value := "%"+SearchWord.Text+"%";
//------------------------------------
В результате получаю выборку строк из базы Base
В выборке все строки, где есть вхождения подстроки SearchWord в колонке Field1

А как изменить запрос, чтобы он искал (и находил) эту подстроку SearchWord в
нескольких колонках например (Field1, Field2, Field3)?


 
Anatoly Podgoretsky ©   (2006-05-04 08:46) [1]

оператор OR


 
alkin   (2006-05-04 09:20) [2]

Кажется получилось:
//------------------------------------
  DataModule.FindQuery.SQL.Clear;
  DataModule.FindQuery.SQL.Add("SELECT *");
  DataModule.FindQuery.SQL.Add("FROM Base");
  DataModule.FindQuery.SQL.Add("WHERE (Field1 LIKE :SearchWord) OR (Field2 LIKE :SearchWord2)");
  DataModule.FindQuery.Parameters.ParamByName("SearchWord").Value := "%"+SearchWord.Text+"%";
  DataModule.FindQuery.Parameters.ParamByName("SearchWord2").Value := "%"+SearchWord.Text+"%";
//------------------------------------
В результате получаю выборку строк из базы Base
В выборке все строки, где есть вхождения подстроки SearchWord в колонки Field1 и Field2
(Вот только переменных будет уже несколько)

Спасибо > Anatoly Podgoretsky


 
Sergey13 ©   (2006-05-04 09:29) [3]

2 [2] alkin   (04.05.06 09:20)
>(Вот только переменных будет уже несколько)
Не факт. Сколько объявишь - столько и будет.


 
ЮЮ ©   (2006-05-04 10:29) [4]

никто не мешает использовать один и тот же параметр в нескольких местах
WHERE (Field1 LIKE :SearchWord) OR (Field2 LIKE :SearchWord)

правда в Parameters будет два элемента, но тут и цикл можно использовать.

З.Ы. БД какая


 
Sergey13 ©   (2006-05-04 10:31) [5]

2[4] ЮЮ ©   (04.05.06 10:29)
>правда в Parameters будет два элемента, но тут и цикл можно использовать.
Зачем цикл? При присвоении по имени значение присвоится всем одинаковым элементам.


 
ЮЮ ©   (2006-05-04 10:38) [6]


> При присвоении по имени

Это как? ParamByName - это лишь один из нескольких экземпляров TParameter в коллекции TParameters.
Такой подход работал в TQuery.Params


 
Sergey13 ©   (2006-05-04 10:43) [7]

2 [6] ЮЮ ©   (04.05.06 10:38)
> Такой подход работал в TQuery.Params
А тут видимо АДО. Не обратил внимания, сори.



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

Текущий архив: 2006.05.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
2-1146291338
Rubey
2006-04-29 10:15
2006.05.21
Составное имя


15-1146141096
Харько
2006-04-27 16:31
2006.05.21
на что переходить?


3-1143444932
alxn
2006-03-27 11:35
2006.05.21
Как дублировать все записи в таблице


2-1146567888
Shlomo
2006-05-02 15:04
2006.05.21
Простая ошибка? (The ‘Real’ is not Real)


8-1135447050
Nigel
2005-12-24 20:57
2006.05.21
System volume