Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Есть ли такая функция-ПОМОГИТЕ!  [new]
Sun`
Member

Откуда:
Сообщений: 16
Есть ли такая функция, которая из символьной строчки выбирает 10 цифр подряд?
-необходимо выбрать код договора , который состоит из 10 цифр из символьной строки,
причем строка может содержать кроме кода договора и дату и сумму. Код договора может находиться в любом месте строчки.
н/р :50:ЧП Иванов * погашение основной суммы - 5000р, процент - 1050р, по кредитному договору 2210050011 ЧП Иванову по сроку 23,05,2006г от 22,05,2006г
23 ноя 06, 12:11    [3440354]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Было бы странно, если бы существовала стандартно такая специфичная функция :)
Пиши свою с использованием INSTR / SUBSTR
23 ноя 06, 12:15    [3440384]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
Какая версия СУБД?
Кроме того, если нет стандартной функции, то всегда можно написать свою.
Кстати, а если в строке будет две и более последовательностей из чисел длиной в 10 знаков, то какую из них тогда показывать???
23 ноя 06, 12:15    [3440389]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Sun`
Есть ли такая функция, которая из символьной строчки выбирает 10 цифр подряд?
-необходимо выбрать код договора , который состоит из 10 цифр из символьной строки,
причем строка может содержать кроме кода договора и дату и сумму. Код договора может находиться в любом месте строчки.
н/р :50:ЧП Иванов * погашение основной суммы - 5000р, процент - 1050р, по кредитному договору 2210050011 ЧП Иванову по сроку 23,05,2006г от 22,05,2006г

Запросто.. В 10g есть regexp_substr. А еще -на любом сервере:
translate всех цифир напр. в '9' + instr десяти девяток вряд + substr ея..
23 ноя 06, 12:18    [3440416]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
Sun`
Member

Откуда:
Сообщений: 16
Бабичев Сергей
Какая версия СУБД?
Кроме того, если нет стандартной функции, то всегда можно написать свою.
Кстати, а если в строке будет две и более последовательностей из чисел длиной в 10 знаков, то какую из них тогда показывать???


неть, 2 последовательности из 10 цифр не может быть. я понимаю , что можно написать свою- но как лучше???
23 ноя 06, 12:32    [3440550]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116064
Озвучиваю предложение orawish

with tab1
as
(select 'efdewdhejkdhe 565656565656556 dewudhedheu%%%%' col1 from dual
 union all
 select 'efdewdhejkdhe 234 ewudhedheu$$%%%%%' col1 from dual
 union all
 select 'e65656565656556 dewudhedheu%%%%' col1 from dual
 )
-------------------------------------
 select * from tab1
 where INSTR(TRANSLATE(col1, '123456780','99999999'),'9999999999') != 0
--------------------------------------
efdewdhejkdhe 565656565656556 dewudhedheu%%%%
e65656565656556 dewudhedheu%%%%
23 ноя 06, 12:41    [3440634]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
2 dmidek - автору,как я понял,число хотца.. :)

with t as (select 'aaa 3334445559 gggg 77-88-999999 jjj' s from dual)
select substr(s,instr(translate(s,'012345678',rpad('9',9,'9')),rpad('9',10,'9')),10)
 n10 from t where instr(translate(s,'012345678',rpad('9',9,'9')),rpad('9',10,'9')) > 0
23 ноя 06, 12:49    [3440712]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
Sun`
неть, 2 последовательности из 10 цифр не может быть. я понимаю , что можно написать свою- но как лучше???
Лучше - не делать таких строк, в которых сразу замешано несколько совершенно разных сущностей.
23 ноя 06, 12:51    [3440735]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
Sun`
Member

Откуда:
Сообщений: 16
Бабичев Сергей
Sun`
неть, 2 последовательности из 10 цифр не может быть. я понимаю , что можно написать свою- но как лучше???
Лучше - не делать таких строк, в которых сразу замешано несколько совершенно разных сущностей.


Эть не я их делаю- такое присылают, а мне приходится разгребать это все. мне нужен это код, что бы дальше сделать связи
23 ноя 06, 12:55    [3440769]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
jenyz
Member

Откуда:
Сообщений: 261
можно чем-то похожим на это получить, если oracle 10g
with tab1
as
(select 50:ЧП Иванов * погашение основной суммы - 5000р, процент - 1050р, по кредитному договору 2210050011 ЧП Иванову по сроку 23,05,2006г от 22,05,2006г' col1 from dual)
 select regexp_substr(col1, '\d{10}') from tab1
 where regexp_like(col1, '\d{10}')
-----------------------------------------------------------------------


REGEXP_SUBSTR(COL1,'\D{10}')
----------------------------
2210050011
23 ноя 06, 12:56    [3440780]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
jenyz
Member

Откуда:
Сообщений: 261
jenyz
можно чем-то похожим на это получить, если oracle 10g

апостроф пропустил...
with tab1
as
(select '50:ЧП Иванов * погашение основной суммы - 5000р, процент - 1050р, по кредитному договору 2210050011 ЧП Иванову по сроку 23,05,2006г от 22,05,2006г' col1 from dual)
 select regexp_substr(col1, '\d{10}') from tab1
 where regexp_like(col1, '\d{10}')
-----------------------------------------------------------------------


REGEXP_SUBSTR(COL1,'\D{10}')
----------------------------
2210050011
23 ноя 06, 12:58    [3440790]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
Sun`
Member

Откуда:
Сообщений: 16
jenyz
можно чем-то похожим на это получить, если oracle 10g
with tab1
as
(select 50:ЧП Иванов * погашение основной суммы - 5000р, процент - 1050р, по кредитному договору 2210050011 ЧП Иванову по сроку 23,05,2006г от 22,05,2006г' col1 from dual)
 select regexp_substr(col1, '\d{10}') from tab1
 where regexp_like(col1, '\d{10}')
-----------------------------------------------------------------------


REGEXP_SUBSTR(COL1,'\D{10}')
----------------------------
2210050011


спаисбо , но пока 8 сижу
23 ноя 06, 12:59    [3440795]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция-ПОМОГИТЕ!  [new]
jenyz
Member

Откуда:
Сообщений: 261
Sun`
спаисбо , но пока 8 сижу

посмотри owa_pattern вместо regexp_*
23 ноя 06, 13:05    [3440841]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить