for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Не фоксом единым
   :: Помощь сайту :: 

Есть ли простой разбор строки в Оракл
boba
[MVP]
Автор

Сообщений: 5218
Откуда: Медвежьи озера-
Дата: 27.11.17 09:31:33ОтветитьЦитировать
Есть чужой продукт.
Некий бесконечно длинный пакет врет.
Есть таблица настройки.
В ней длинное поле со списком инн контрагентов,
ну например, 123456668. 1510000 . итд
Поле с кодом валют. ( для такой строки доллар)
Есть функция, которая подсовывает из базы инн.
Должно работать только по полному совпадению.
Но так не работает, так как используется instring
Неизвестно почему, физ лицу, которого нет в справочнике
контрагентов приписали инн 1000
Так вот, функция ловит эту 1000 внутри 1510000 и возвращает доллар.
Коллега посоветовал убрать в их функции instring и заменить на
getepr
Ситуация исправилась частично, 1000 не ловится в 1510000,
но зато если в длинном выражении есть 123456668. 1000015
, снова ловится
У меня есть скачанные с ИНЕт аналоги фоксовых getwordnum.
getwordcount с помощью которых можно сделать правильный разбор строк
Но боязно ломать чужой пакет, где что-то может отвалится от такой радикальной правки.
Нет ли способа получше?
Ratings: 0 negative/0 positive

Re: Есть ли простой разбор строки в Оракл
pasha_usue

Сообщений: 2928
Откуда: Е-бург
Дата: 27.11.17 10:47:29ОтветитьЦитировать
Если разделители всегда стоят правильно, то искать вместе с разделителем. ", 1510000", либо в начале строки. Если разделители гуляют, то искать через Reg_Exp, но тоже с разделителем.
Ratings: 0 negative/0 positive

Re: Есть ли простой разбор строки в Оракл
boba
[MVP]
Автор

Сообщений: 5218
Откуда: Медвежьи озера-
Дата: 27.11.17 18:54:42ОтветитьЦитировать
Так не катит, может быть в списке одно значение ,
и тогда никакого разделителя
С помощью getwornum, getwordcount
от нашего человека в Канаде написал свою разборку
Протестировал, работает нормально.
Завтра попробую использовать, не ломая их код,
а пусть исправление поверху его.
Ratings: 0 negative/0 positive

Re: Есть ли простой разбор строки в Оракл
Igor Korolyov

Сообщений: 32006
Дата: 27.11.17 20:48:45ОтветитьЦитировать
Кто мешает сделать строку ','||исходное_поле||',' и искать тривиально подстроку ',12345,' ?
Конечно, если в этом "поле со списком" разделители достаточно строго стоят, да числа между ними безо всякой отсебятины. Пробелы, если они вдруг "то есть то нет" можно вырезать replace-ом. Впрочем, и "разброд разделителей" можно replace-ом упорядочить... Всяко лучше (быстрее и логичнее) будет нежели цикл по эмулируемому getwordcount... Это даже если на корню отбросить вариант с REGEXP_LIKE, который может решить проблему без особых хлопот.


------------------
WBR, Igor
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 50 Chemberzhy  and Guests: 49


© 2000-2018 Fox Club 
Яндекс.Метрика