![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Like - Containing [D5, Paradox]
Dmitry Vyacheslavovich © (2004-06-01 21:40:00)Возникла следующая проблема. Имеется база данных, по запросам извлекающая необходимую информацию. Один из запросов выглядит следующим образом : 'select Name, Telefon, Adresse from main where Name like "'+TabSet1.Tabs.Strings[NewTab]+'%"'
Однако необходимо, чтобы запрос был нечувствителен к регистру, тогда прочитал в Help`e, что можно использовать containing. Но при активации запроса программа выкидывает с сообщением "Capability not supported". В чём может быть проблема?
С уважением Дмитрий.
Vlad (2004-06-03 16:18:00) [1]
> тогда прочитал в Help`e, что можно использовать containing.
> Но при активации запроса программа выкидывает с сообщением
> "Capability not supported". В чём может быть проблема?
>
В каком Help'e Вы это прочитали ? В LocalSql нету. Следовательно CONTAINING не поддерживается BDE.
Могу предложить след. выход:
создать доп. поле в таблице, куда писать то же, что и в исходном поле, только в верхнем регистре. Это позволит избежать фулскан.
Dmitry Vyacheslavovich (2004-06-03 15:55:00) [2]Да, горячая получилась полемика. Использовать фуллскан и правдо не хотелось бы. Пусть записей будет и немного (порядка нескольких тысяч), но могу представить в какие задержки это может вылиться. Хотелось бы всё-таки выяснить, что же не так с этим CONTAINING. Очень прошу что-нибудь добавить...
Sergey_Masloff (2004-06-02 12:17:00) [3]Sergey13 © (02.06.04 11:47) [13]
>ИМХО, категоричность плоха всегда,
Да знаю, знаю... А что поделать? ;-)
Sergey13 (2004-06-02 11:47:00) [4]2Sergey_Masloff (02.06.04 11:37) [12]
ИМХО, категоричность плоха всегда, а вот фулскан невсегда. Тут все зависит от деталей и конкретных условий.
Вот такой я филосОф. 8-)
Sergey_Masloff (2004-06-02 11:37:00) [5]Sergey13 © (02.06.04 10:30) [11]
Ну такой вот я... Веселый человек.
И все равно к плохому лучше не привыкать а фулскан плохо.
Sergey13 (2004-06-02 10:30:00) [6]2Sergey_Masloff (02.06.04 10:21) [10]
>Да я по диагонали прочитал ;-)
При этом всех пожизненно расстреливая. 8-)
Sergey_Masloff (2004-06-02 10:21:00) [7]Соловьев © (02.06.04 09:57) [8]
>интересно какой такой сервер с Парадоксом?
Да я по диагонали прочитал ;-)
Sergey13 (2004-06-02 10:04:00) [8]2Соловьев © (02.06.04 09:57) [8]
>интересно какой такой сервер с Парадоксом?
Парадоксальный. 8-)
Соловьев (2004-06-02 09:57:00) [9]
> запросов хотя бы пара-тройка ты сервер в такой даун уложишь
> что мама не горюй...
интересно какой такой сервер с Парадоксом?
Johnmen (2004-06-02 09:55:00) [10]>Sergey_Masloff (02.06.04 09:40) [5]
А никто никого не учил. Просто конкретно ответили на конкретный вопрос.
>Еще можно сделать ...
Еще можно много чего... Напр. велосипед собрать из подручного материала...:)
Sergey13 (2004-06-02 09:53:00) [11]2Sergey_Masloff (02.06.04 09:40) [5]
>За это пожизненный расстрел однозначно.
Че то ты раздухарился, ИМХО, в деле спасения сервера Парадокс. 8-)
Sergey_Masloff (2004-06-02 09:40:00) [12]Johnmen © (02.06.04 09:13) [3]
>И что дальше ?
Дальше вывод очевиден - хранить все данные в одном кейсе, а аппер он или лавер без разницы. Чтобы не травмировать чувствительных пользователей можно при выводе на экран делать InitCapFirst на клиенте (да и на сервере можно). Еще можно сделать индекс по функции но не везде поддерживается да и накладно может быть.
Но учить такому:
where Upper(Name)
За это пожизненный расстрел однозначно.
Anatoly Podgoretsky (2004-06-02 09:22:00) [13]В том, что not supported
Johnmen (2004-06-02 09:13:00) [14]>Sergey Masloff (01.06.04 22:30) [2]
>Уж сколько раз твердили миру...
И что дальше ?
Sergey Masloff (2004-06-01 22:30:00) [15]>where Upper(Name) Like Upper("aBc")
Уж сколько раз твердили миру... Этот Upper(Name) => Гарантированный фуллскан. Если в таблице хотя бы пара миллионов записей а таких запросов хотя бы пара-тройка ты сервер в такой даун уложишь что мама не горюй...
Exciter (2004-06-01 22:23:00) [16]
> Однако необходимо, чтобы запрос был нечувствителен к регистру
where Upper(Name) Like Upper("aBc")
Или вместо Upper пробуй UpperCase
Должно сработать.