:: Не фоксом единым
Есть ли простой разбор строки в Оракл
boba

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

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Если разделители всегда стоят правильно, то искать вместе с разделителем. ", 1510000", либо в начале строки. Если разделители гуляют, то искать через Reg_Exp, но тоже с разделителем.
Ratings: 0 negative/0 positive
Re: Есть ли простой разбор строки в Оракл
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Так не катит, может быть в списке одно значение ,
и тогда никакого разделителя
С помощью getwornum, getwordcount
от нашего человека в Канаде написал свою разборку
Протестировал, работает нормально.
Завтра попробую использовать, не ломая их код,
а пусть исправление поверху его.
Ratings: 0 negative/0 positive
Re: Есть ли простой разбор строки в Оракл
Igor Korolyov
Автор

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


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


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

On-line: 7 (Гостей: 7)

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