Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизSQL запрос по текстовым полям Найти похожие ветки
← →
vakir77 (2004-07-13 23:46) [0]Здравствуйте, подскажите, как в Delphi реализовать следующий запрос:
select * from table where surname="Иванов И.И."
в общем любой запрос по текстовым полям. Я делаю так:
Query1.close;
Query1.Sql.clear;
Query1.sql.add("select * from table where surname="+"Иванов И.И."")
Query1.open;
Вылетает ошибка. Обьясните пожалуйста, что я делаю не так.
← →
Vemer © (2004-07-14 00:07) [1]Возможно что Table - зарезервированное слово.
Задай SQL в Design-time с параметром:Select * from My_Table Where Surname = :MY_Name
В кодеQuery1.Close;
Query1.ParamByName("My_Name").AsString := "Иванов И.И."
Query1.Open
← →
vakir77 (2004-07-14 00:34) [2]Нет с Table все в порядке, не зарезервированное слово.
в Design запрос отрабатывает, в коде нет.
проблема насколько я понимаю в кавычках "Иванов И.И.".
в коде они не воспринимаются как кавычки.
← →
P.N.P. © (2004-07-14 01:14) [3]Query1.sql.add("select * from table where surname="+QuotedStr("Иванов И.И."))
← →
Bacuc © (2004-07-14 06:28) [4]SELECT * FROM table WHERE surname = "Иванов И.И."
А если писатьQuery1.sql.add("select * from table where surname="+"Иванов И.И.")
Получится SQL-запрос:
SELECT * FROM table WHERE surname=Иванов И.И.
Разница есть?
← →
menart © (2004-07-14 08:12) [5]
Query1.sql.add("select * from table where surname="Иванов И.И.""
попробуй так
← →
Константин © (2004-07-14 08:59) [6]
Query1.Active := false;
Query1.SQL.Text := "SELECT *FROM chanel.db WHERE ODate BETWEEN " + """" + "03/01/" + inttostr(i + 2004) + """" + " AND " + """" + "03/31/" + inttostr(i + 2004) + """";
Query1.Active := true;
У меня работает
← →
Ильш © (2004-07-14 09:26) [7]насколько я помню в Дельфи чтобы выдать кавычки одинарные надо их дважды написать типа
Query1.sql.add("select * from table where surname="+"""Иванов И.И.""")
вроде бы так.. или же вот С++ можно типа такого
Query1->sql->add("select * from table where surname="+"/"Иванов И.И./"")
← →
Соловьев © (2004-07-14 09:39) [8]Желательно использовать Like(потом вдруг захотите искать по части фамилии) и параметры:
полное совпадение
select *
from table
where surname like :param1||"%"
частичное
select *
from table
where surname like :param1||"%"
без учета регистра:
select *
from table
where upper(surname) like upper(:param1)
← →
Rostislav Rotaru © (2004-07-14 10:49) [9]У меня всегда работает
Query1.sql.add("select * from table where surname="+#39+"Иванов И.И."+#39
← →
Anatoly Podgoretsky © (2004-07-14 11:29) [10]Соловьев © (14.07.04 09:39) [8]
И конечно четвертый, как правило более нужный вариант - % с обеих сторон
← →
bushmen © (2004-07-14 11:43) [11]> полное совпадение
> select *
> from table
> where surname like :param1||"%"
> частичное
> select *
> from table
> where surname like :param1||"%"
Чем они у тебя отличаются? :)
← →
Соловьев © (2004-07-14 11:52) [12]Все уже догадались:) А ты нет...
← →
vakir77 (2004-07-14 13:44) [13]Всем большое спасибо, действительно помогли.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 3.994 c