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

Вниз

Like   Найти похожие ветки 

 
Ann   (2003-05-26 12:48) [0]

Добрый день!
Подскажите пожалуйста, в чем моя ошибка.
Пишу в хранимую процедуру
for select spraddr.name from spraddr
where spraddr.code like :stroka
into: stroka2
ничего не возвращает. А если явно указать там же
where spraddr.code like "670000000000000" тогда находит записи.
В чем ошибка?


 
NAlexey   (2003-05-26 12:58) [1]

В параметр :stroka невесть что передаешь...


 
Соловьев   (2003-05-26 12:59) [2]

СУБД? А так?
...
where spraddr.code like :stroka||"%"
...


 
Ann   (2003-05-26 13:09) [3]


> Соловьев © (26.05.03 12:59)
> СУБД? А так?
> ...
> where spraddr.code like :stroka||"%"
> ...

Субд FireBird
так тоже ничего не находит


 
Соловьев   (2003-05-26 13:09) [4]

как передаешь параметр?


 
Ann   (2003-05-26 13:14) [5]

dm.Proc_adres.Prepare;
dm.Proc_adres.ParamByName("stroka").Value:="670%%%000000000";
dm.Proc_adres.ExecProc;


 
Соловьев   (2003-05-26 13:20) [6]


> dm.Proc_adres.ParamByName("stroka").Value:="670%%%000000000";

а что это еще за %%%?



 
Ann   (2003-05-26 13:23) [7]

то что на этом месте может быть любой символ.. но когда писала 670000000000000 все равно не находил :(


 
Max Zyuzin   (2003-05-26 13:26) [8]

>Ann © (26.05.03 13:23)
Почитай хелп... % значит любое количество любых символов (в том числе и 0), а _ - 1 символ любой.


 
Соловьев   (2003-05-26 13:27) [9]

TIBQuery:
select *
from MyProc(:stroka)


в проге
with Query do
begin
Close;
ParamByName("stroka").AsString := Edit1.Text;
if not Prepared then Prepare;
Open;
end;


 
Max Zyuzin   (2003-05-26 13:29) [10]

>Ann © (26.05.03 13:23)
Напиши плиз по какой маске тебе надо поиск совершать?


 
Соловьев   (2003-05-26 13:30) [11]


> dm.Proc_adres.ExecProc;

А не open надо? может и ошибаюсь...


 
Ann   (2003-05-26 13:39) [12]


> Соловьев © (26.05.03 13:27)


Что-то я совсем запуталась.. я писала в query
select * from adres_select
(:result)
то есть выбирала туда уже результат
это неправильно?
и еще вопрос, если мне нужно выбрать значение у которого будут первые три числа постоянные, потом три числа могут быть любые, а потом заканчивается число на еще допустим три постоянных числа, то мне получается нельзя так писать
допустим 670%%%000 то есть если я напишу три% они мне не дают гарантию что там будет три любых значения? (мда, путанно объяснила)


 
bushmen   (2003-05-26 13:39) [13]

Open не надо
Просто dm.Proc_adres.ExecProc


 
Zacho   (2003-05-26 13:40) [14]

Лучше вообще не использовать TStoredProc, TIBStoredProc.
Подробности - http://www.ibase.ru/devinfo/ibstp.htm


 
Ann   (2003-05-26 13:46) [15]

Max Zyuzin ©
да мне нужно по этой строке сделать несколько запросов.
первый: выбираю те у который три первых символа любые, остальные фиксировано нули
второй что первый три чила фиксированы,следующие три любые, потом нули
третий.. и так далее, пока не проверю все 15 символов..


 
bushmen   (2003-05-26 13:51) [16]

Тебе достаточно одного "%", чтобы на том месте любое количество любых символов. Чтобы было три любых символа, надо ставить "___" (три символа подчеркивания)


 
Ann   (2003-05-26 13:54) [17]


> bushmen © (26.05.03 13:51)

Спасибо!


 
Zacho   (2003-05-26 13:55) [18]


> Ann © (26.05.03 13:46)

Начиная с IB 6.0 есть функция SUBSTRING(fieldname FROM n FOR m), не проще ли воспользоваться ей ?


 
bushmen   (2003-05-26 13:57) [19]

> Ann ©
Нет проблем


 
Stas   (2003-05-26 14:01) [20]

Может лучше сделать так ?
Query.Sql.Clear
Query.SQL.Add( select * from adres_select
("670___000"))


 
Ann   (2003-05-26 14:08) [21]

И еще может посоветуете.. Дело в том, что в таблице 670 тыс. записей, а куча выборок.. она ели ворочается.. как лучше организовать выбоки.. на клиентской части в селекте или в хранимых процедурах? есть ли разница?


 
Stas   (2003-05-26 14:09) [22]

Лучше в хранимых процедурах.
А что у тебя за СУБД ?


 
Ann   (2003-05-26 14:10) [23]

Субд FireBird


 
bushmen   (2003-05-26 14:12) [24]

> Ann ©
Так как у тебя по идее сервер мощнее пользовательской машины, то лучше в хранимых процедурах. Ты, надеюсь, проиндексировала таблицу по этому полю?


 
Stas   (2003-05-26 14:17) [25]

> bushmen © (26.05.03 14:12)
Даже если в мощности разницы нет, все равно сервер обрабатывает. Только если это хп , то он получил ссылку на нее и обработал, А если это выборка, то теряется время на передачу всех параметров.


 
Ann   (2003-05-26 14:21) [26]

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


 
Zacho   (2003-05-26 14:27) [27]


> Ann © (26.05.03 14:21)

Естественно, при like :param индекс не используется, индекс может использоваться только при STARTING WITH и LIKE <значение>%


 
Stas   (2003-05-26 14:33) [28]

Может у тебя сервак медленный ?


 
Ann   (2003-05-26 14:33) [29]


> Zacho © (26.05.03 14:27)

это как? объясни пожалуйста поподробнее


 
Zacho   (2003-05-26 14:42) [30]


> Ann © (26.05.03 14:33)

В смысле подробнее ? Не используется индекс для like :param и все тут. При STARTING WITH :param и LIKE <значение>% (именно конкретное значение, а не параметр) индекс может использоваться.
Вообще, лучше придумай другой способ, чем несколько запросов с like.


 
Ann   (2003-05-26 14:50) [31]

всем большое спасибо! :)



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

Форум: "Базы";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.006 c
14-50514
alxx
2003-05-31 14:11
2003.06.16
Как соединить два офиса?


1-50335
Yakudza
2003-06-03 15:15
2003.06.16
Как покрасить строчку в BDGrid`е


6-50423
Reals
2003-04-10 15:30
2003.06.16
Нужно подсчитать траффик интернета в выделенке...


7-50537
jonni
2003-04-12 22:50
2003.06.16
Как запретить открутие папки с файлами под Win98


14-50488
Gremlin
2003-05-30 11:40
2003.06.16
Про FTP





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