Добрый день.
Работаю с таблицей Excel через ADO драйвер {Microsoft Excel Driver (*.xls)}.
В одном из селектов необходимо использование функции вроде Find — находящей место
вхождения одной строки во вторую. Перепробывал все — locate, instr, position. В MSDN
описана именно locate(str1,str2) или locate(str1,str2, start_pos).
Однако все равно получаю "ошибку в комманде"
Оригинал запроса приблизительно таков. "select * from [sheet1$] where lacate(name,'%s') <> 0".
Что нужно сделать чтобы такой функционал заработал ?
Здравствуйте, dvurukov, Вы писали:
D>Оригинал запроса приблизительно таков. "select * from [sheet1$] where lacate(name,'%s') <> 0".
Это действительно оригинал?
D>Что нужно сделать чтобы такой функционал заработал ?
LIKE попробуй.
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, dvurukov, Вы писали:
D>>Оригинал запроса приблизительно таков. "select * from [sheet1$] where lacate(name,'%s') <> 0". W>Это действительно оригинал?
D>>Что нужно сделать чтобы такой функционал заработал ? W>LIKE попробуй.
Ну ошибся — locate.... А если по существу — то LIKE не подходит — содержимое поля БД должно включаться в некуюю строку, а не наоборот...
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, dvurukov, Вы писали:
D>>LIKE не подходит — содержимое поля БД должно включаться в некуюю строку, а не наоборот...
W>И в чем проблема? '%s' LIKE name ...
Проблема в производительности. LIKE и так монстр в плане ресурсов. А если еще первая строка меньше второй...
Здравствуйте, dvurukov, Вы писали: D>Проблема в производительности. LIKE и так монстр в плане ресурсов. А если еще первая строка меньше второй...
Ты бы лучше написал саму задачу. Может вместе придумаем способ поднять производительность. Слишком конкретные вопросы — вредно. "Как выточить на токарном станке квадратную гайку?".
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, dvurukov, Вы писали:
D>Проблема в производительности. LIKE и так монстр в плане ресурсов. А если еще первая строка меньше второй...
Не надо ламерства, тут его и так хватает.
Проблема твоя не в LIKE, а в том, что ты работаешь с таблицей Excel через ADO драйвер. Это как удалять гланды через...
Re[6]: SQL функции и ADO EXCEL
От:
Аноним
Дата:
29.04.05 10:51
Оценка:
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, dvurukov, Вы писали:
D>>Проблема в производительности. LIKE и так монстр в плане ресурсов. А если еще первая строка меньше второй...
W>Не надо ламерства, тут его и так хватает. W>Проблема твоя не в LIKE, а в том, что ты работаешь с таблицей Excel через ADO драйвер. Это как удалять гланды через...
В чем ламерство? В том что LIKE раза в 1.5-2 менее производителен, чем обычный поиск (в моем случае). Сам же предложил :
'%s' LIKE name — разве это не хак?
Собственно говоря, я работаю не только с Excel, но и с другими форматами файлов БД — dBase, например всякие.
Само собой, что можно для каждого из них найти свой оптимальный механизм работы. Но тогда разработка растянется до моей пенсии, а денег хочется к праздникам ... Короче, с глобальными вопросами проектирования и средствами разработки я сам разберусь — не курсы 1С заканчивали .
А проблема моя достаточно конкретная и обобщить я ее никак не смогу — функция поиска подстроки, которая фигурирует в ODBC Developer's Guide, в документации к самому драйверу ODBC, но не шибко работает
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, dvurukov, Вы писали: D>>Проблема в производительности. LIKE и так монстр в плане ресурсов. А если еще первая строка меньше второй... S>Ты бы лучше написал саму задачу. Может вместе придумаем способ поднять производительность. Слишком конкретные вопросы — вредно. "Как выточить на токарном станке квадратную гайку?".
. Есть, например, Excel файл — тыщ на 50 записей, в котором содержатся ссылки на различные ресурсы, типа
Здравствуйте, dvurukov, Вы писали: D>А мне нужно выбрать все , ну скажем, форумы рунета...
И что? То есть ты думаешь, что существует способ быстрее, чем
where url like '%forum%'
? Очень я в этом сомневаюсь. К тому же я не вижу, почему тремя сообшениями выше кто-то стал ставить поле справа от Like.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, dvurukov, Вы писали: D>>А мне нужно выбрать все , ну скажем, форумы рунета... S>И что? То есть ты думаешь, что существует способ быстрее, чем S>
S>where url like '%forum%'
S>
S>? Очень я в этом сомневаюсь. К тому же я не вижу, почему тремя сообшениями выше кто-то стал ставить поле справа от Like.
Хорошо не совсем так пример привел — если кретерий forum в базе находится, а url на вход приходит? То есть существует база с категориями сайтов, которые нужно выбрать(форумы, чаты... причем они могут комбинироваться), ну и база с самими ссылками... ?
Здравствуйте, dvurukov, Вы писали:
D>Работаю с таблицей Excel через ADO драйвер {Microsoft Excel Driver (*.xls)}. D>В одном из селектов необходимо использование функции вроде Find — находящей место D>вхождения одной строки во вторую. Перепробывал все — locate, instr, position. В MSDN
select * from [lib$] where instr(genre,'Punk Rock')>0 — вполне себе работает, выбирает, что надо.
Здравствуйте, dkms1, Вы писали:
D>Здравствуйте, dvurukov, Вы писали:
D>>Работаю с таблицей Excel через ADO драйвер {Microsoft Excel Driver (*.xls)}. D>>В одном из селектов необходимо использование функции вроде Find — находящей место D>>вхождения одной строки во вторую. Перепробывал все — locate, instr, position. В MSDN
D>select * from [lib$] where instr(genre,'Punk Rock')>0 — вполне себе работает, выбирает, что надо.
Самое смешное, что я instr сюда написал, а на деле перепробывал все кроме нее... . Спасибо за содержательный ответ