Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск в содержимом поля / 11 сообщений из 11, страница 1 из 1
28.11.2006, 22:38
    #34162399
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
Как программно найти в содержимом поля, пусть "11Б", если неизвестно с какой позиции и что между ними.
В мастере форм (набор кнопок) при FIND появляется contains , а как аналогично организовать с LOCA, FILTR, SELE Или что можно сделать подругому?
...
Рейтинг: 0 / 0
28.11.2006, 22:57
    #34162423
Jurisfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
В таком случае лучше всего использовать регулярные выражения.
В поставку входит фундаментальный класс _regexp.
Ничего сложного или хитрого.

Никогда не говори "невозможно", просто попробуй сделать иначе!
JS (at FoxClub)
...
Рейтинг: 0 / 0
29.11.2006, 01:30
    #34162534
M.Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
Я бы делал так :

Create Table TestTable (TestFild C(100))
Insert into TestTable values ("12313111Bwdwfwf")
Insert into TestTable values ("12313qwd11Bwdwfqdwf")
Insert into TestTable values ("12dasd313qwd11Bwdwfqasddwf")

Select TestFild from TestTable where TestFild like "%11B% "
...
Рейтинг: 0 / 0
29.11.2006, 07:54
    #34162671
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
M.Alex
Спасибо, то что надо!
...
Рейтинг: 0 / 0
29.11.2006, 09:53
    #34162895
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
BMJКак программно найти в содержимом поля, пусть "11Б", если неизвестно с какой позиции и что между ними.
В мастере форм (набор кнопок) при FIND появляется contains , а как аналогично организовать с LOCA, FILTR, SELE Или что можно сделать подругому?
Можно и
Код: plaintext
1.
SELECT TestTable
LOCATE FOR ATC("11Б",TestFild)> 0 
...
Рейтинг: 0 / 0
29.11.2006, 20:46
    #34165511
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
Спасибо за проблему выбора! (шутка).
Спасибо.
...
Рейтинг: 0 / 0
29.11.2006, 23:19
    #34165649
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
Варианты поиска в подстроке для команды LOCATE FOR

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT TestTable

LOCATE FOR "11Б" $ TestFild
LOCATE FOR LIKE("*11Б*",TestFild)
LOCATE FOR AT("11Б",TestFild)> 0 
LOCATE FOR ATC("11Б",TestFild)> 0 
LOCATE FOR RAT("11Б",TestFild)> 0 
LOCATE FOR LEN(STRTRAN(TestFild,"11Б",""))<>LEN(TestFild)

Все эти функции, кроме ATC(), чувствительны к регистру. Т.е. маленькая буква не равна большой. Если при использовании одной из этих функций необходимо уравнять большие и маленькие буквы, то следует использовать функции преобразования регистра UPPER() или LOWER().

Использованная в данном случае функция LIKE() это не то же самое, что опция LIKE в команде Selec-SQL. У них разный синтаксис.

Следует иметь в виду, что какой-бы способ Вы ни испольовали поиск будет осуществляться очень медленно, поскольку он заведомо НЕ оптимизируемый.
...
Рейтинг: 0 / 0
29.11.2006, 23:26
    #34165656
M.Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
ВладимирМ, не уверен что не оптимизируем.
...
Рейтинг: 0 / 0
29.11.2006, 23:33
    #34165662
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
M.AlexВладимирМ, не уверен что не оптимизируем.
"Штатно" - не оптимизируются, поскольку в FoxPro основа оптимизиации - это индекс. Поиск в индексе может быть либо по первым символам, либо по всему значению ключа. Во всех остальных случаях оптимизиции нет.

Если бы задача стояла так: найти значение, у которые первые символы равны указанному выражению, вот тогда оптимизация возможна. Это был бы поиск такими командами

Код: plaintext
1.
2.
3.
4.
LOCATE FOR LIKE("11Б*",TestFild)

SET EXACT OFF
LOCATE FOR TestFild="11Б"
...
Рейтинг: 0 / 0
29.11.2006, 23:50
    #34165671
M.Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
ВладимирМ, не хочеться верить в плохое ) как-то в памяти оно же рулит. Не верю, вернее не хочу верить, что создатели фокса так лажают.
...
Рейтинг: 0 / 0
30.11.2006, 07:50
    #34165848
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в содержимом поля
M.AlexВладимирМ, не хочеться верить в плохое ) как-то в памяти оно же рулит. Не верю, вернее не хочу верить, что создатели фокса так лажают.
Причем тут создатели FOX!!!
Быстрый (оптимальный) поиск основан на использовании индексов.
В T-SQL говорят, что поиск по LIKE, когда шаблон начинается с wildcard "_" или "%" "УБИВАЕТ"! индекс. В этом случае не возможно использовать поиск по сбалансированному дереву (B-Tree), т.е. индекс не используется. В этом случае происходит операция Table Scan, т.е. перебор всех записей таблицы, а это и есть не оптимизированный поиск.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск в содержимом поля / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]