powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Построить индексное выражение
12 сообщений из 12, страница 1 из 1
Построить индексное выражение
    #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
Построить индексное выражение
    #39969200
Penner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STRTRAN()
...
Рейтинг: 0 / 0
Построить индексное выражение
    #39969221
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что эта функция даст? Что менять на что?
...
Рейтинг: 0 / 0
Построить индексное выражение
    #39969265
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поля создавайте отдельные. Для соответствующих фрагментов. И по этим полям стройте простые индексы

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

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

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

1. В самом первом посте было написано "... точка может находиться в любом месте"
Я читать вроде умею. Для IP адресов это нормально и так и должно быть. Так что ваше "... точка может находиться в любом месте" совершенно не в кассу.
2. Я уже вроде как сказав "спасибо", всем ответившим постарался уйти от полемики и закрыть тему.Закрывает здесь темы отнюдь не автор первого поста в ней.
...
Рейтинг: 0 / 0
Построить индексное выражение
    #39969353
Penner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.345.678 = 123.45.678 ???
...
Рейтинг: 0 / 0
Построить индексное выражение
    #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
Построить индексное выражение
    #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
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Построить индексное выражение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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