Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Построить индексное выражение / 12 сообщений из 12, страница 1 из 1
15.06.2020, 06:07
    #39969174
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
есть данные ip, которые внесены по разному, точка может находиться в любом месте, как-то надо сделать индекс по первым символов до точки, потом по вторым, третьим и четвёртым. Можно воспользоваться substr() и вырезать до точки, но индексное выражение получится очень длинным , что-то типа (PADL(SUBSTR(ALLTRIM(sip_ipa),RAT(".",ALLTRIM(sip_ipa),2)+1,RAT(".",ALLTRIM(sip_ipa))-RAT(".",ALLTRIM(sip_ipa),2)-1),3," ")). Есть какие-нибудь другие варианты для построения индекса для значений ip, чтоб получилось покороче?
...
Рейтинг: 0 / 0
15.06.2020, 09:15
    #39969200
Penner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
STRTRAN()
...
Рейтинг: 0 / 0
15.06.2020, 09:46
    #39969221
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
А что эта функция даст? Что менять на что?
...
Рейтинг: 0 / 0
15.06.2020, 11:23
    #39969265
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
Поля создавайте отдельные. Для соответствующих фрагментов. И по этим полям стройте простые индексы

Судя по самому вопросу, парсинг полученного значения - не тривиальная задача. Вот и не пытайтесь все впихнуть в некое универсальное выражение индекса. Лучше создайте триггер (или вручную запускайте процедуру), которая учтет все возможные сценарии и разложит строку по фрагментам

Можно, конечно, использовать GetWordNum(), указав в качестве разделителя точку, но, судя по постановке задачи, это не всегда сработает. Да и визуально проверять будет сложно. Отдельные поля в данном случае - проще и нагляднее.
...
Рейтинг: 0 / 0
15.06.2020, 11:52
    #39969274
Penner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
STRTRAN(sip_ipa,'.','')
...
Рейтинг: 0 / 0
15.06.2020, 11:53
    #39969275
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
спасибо.
...
Рейтинг: 0 / 0
15.06.2020, 12:19
    #39969279
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
ВладимирМ
Можно, конечно, использовать GetWordNum(), указав в качестве разделителя точку, но, судя по постановке задачи, это не всегда сработает.
Сработает. Это просто ТС считает, что точка должна быть на фиксированном месте, а для IP адресов это совершенно не так. И каждая из четырех частей есть всего лишь число до 255 без незначащих лидирующих нулей.
...
Рейтинг: 0 / 0
15.06.2020, 12:24
    #39969280
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
Sergey Sizov,

1. В самом первом посте было написано "... точка может находиться в любом месте"
2. Я уже вроде как сказав "спасибо", всем ответившим постарался уйти от полемики и закрыть тему.
...
Рейтинг: 0 / 0
15.06.2020, 13:26
    #39969301
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
q1w1e1
Sergey Sizov,

1. В самом первом посте было написано "... точка может находиться в любом месте"
Я читать вроде умею. Для IP адресов это нормально и так и должно быть. Так что ваше "... точка может находиться в любом месте" совершенно не в кассу.
2. Я уже вроде как сказав "спасибо", всем ответившим постарался уйти от полемики и закрыть тему.Закрывает здесь темы отнюдь не автор первого поста в ней.
...
Рейтинг: 0 / 0
15.06.2020, 14:40
    #39969353
Penner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
12.345.678 = 123.45.678 ???
...
Рейтинг: 0 / 0
16.06.2020, 10:30
    #39969622
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
? padl(GETWORDNUM("12.345.678",1,"."),3," ");
+padl(GETWORDNUM("12.345.678",2,"."),3," ");
+padl(GETWORDNUM("12.345.678",3,"."),3," ");
+padl(GETWORDNUM("12.345.678",4,"."),3," ");
=;
padl(GETWORDNUM("123.45.678",1,"."),3," ");
+padl(GETWORDNUM("123.45.678",2,"."),3," ");
+padl(GETWORDNUM("123.45.678",3,"."),3," ");
+padl(GETWORDNUM("123.45.678",4,"."),3," ")
...
Рейтинг: 0 / 0
16.06.2020, 10:57
    #39969638
Penner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить индексное выражение
? padl(GETWORDNUM("12.45.678",1,"."),3,"0");
+padl(GETWORDNUM("12.45.678",2,"."),3,"0");
+padl(GETWORDNUM("12.45.678",3,"."),3,"0");
+padl(GETWORDNUM("12.45.678",4,"."),3,"0")
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Построить индексное выражение / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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