Есть ли простой разбор строки в Оракл | |
---|---|
boba Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Есть чужой продукт.
Некий бесконечно длинный пакет врет. Есть таблица настройки. В ней длинное поле со списком инн контрагентов, ну например, 123456668. 1510000 . итд Поле с кодом валют. ( для такой строки доллар) Есть функция, которая подсовывает из базы инн. Должно работать только по полному совпадению. Но так не работает, так как используется instring Неизвестно почему, физ лицу, которого нет в справочнике контрагентов приписали инн 1000 Так вот, функция ловит эту 1000 внутри 1510000 и возвращает доллар. Коллега посоветовал убрать в их функции instring и заменить на getepr Ситуация исправилась частично, 1000 не ловится в 1510000, но зато если в длинном выражении есть 123456668. 1000015 , снова ловится У меня есть скачанные с ИНЕт аналоги фоксовых getwordnum. getwordcount с помощью которых можно сделать правильный разбор строк Но боязно ломать чужой пакет, где что-то может отвалится от такой радикальной правки. Нет ли способа получше? |
Re: Есть ли простой разбор строки в Оракл | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Если разделители всегда стоят правильно, то искать вместе с разделителем. ", 1510000", либо в начале строки. Если разделители гуляют, то искать через Reg_Exp, но тоже с разделителем.
|
Re: Есть ли простой разбор строки в Оракл | |
---|---|
boba Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Так не катит, может быть в списке одно значение ,
и тогда никакого разделителя С помощью getwornum, getwordcount от нашего человека в Канаде написал свою разборку Протестировал, работает нормально. Завтра попробую использовать, не ломая их код, а пусть исправление поверху его. |
Re: Есть ли простой разбор строки в Оракл | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Кто мешает сделать строку ','||исходное_поле||',' и искать тривиально подстроку ',12345,' ?
Конечно, если в этом "поле со списком" разделители достаточно строго стоят, да числа между ними безо всякой отсебятины. Пробелы, если они вдруг "то есть то нет" можно вырезать replace-ом. Впрочем, и "разброд разделителей" можно replace-ом упорядочить... Всяко лучше (быстрее и логичнее) будет нежели цикл по эмулируемому getwordcount... Это даже если на корню отбросить вариант с REGEXP_LIKE, который может решить проблему без особых хлопот. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |