Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование строки / 9 сообщений из 9, страница 1 из 1
16.07.2018, 13:58
    #39674487
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
Добрый день, есть строка вида
Код: plsql
1.
123=6543212;545=1234532;777=7864324;222=3422657


подскажите как получить строку с таким видом
Код: plsql
1.
6543212,1234532,7864324,3422657
...
Рейтинг: 0 / 0
16.07.2018, 14:11
    #39674495
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
petrovichvanya,

Код: plsql
1.
2.
3.
with src(txt) as 
(select '123=6543212;545=1234532;777=7864324;222=3422657' from dual)
select trim(',' from regexp_replace(txt, '(^|;)\d{3}=', ',')) from src;
...
Рейтинг: 0 / 0
16.07.2018, 16:49
    #39674599
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
помогите разобраться с ошибкой "The following error(s) have occured: '3635082,3635514,3635522,3635525' is not a valid integer value"
ошибка возникает при проверке условия
Код: plsql
1.
 where c.contractid in (:aInstContrId)



при выполнение этого кода программа выдает результат "3635082,3635514,3635522,3635525"
Код: plsql
1.
2.
3.
select  
 (select trim(',' from regexp_replace('933=3635082;840=3635514;978=3635522;643=3635525', '(^|;)\d{3}=', ',')) from dual) aInstContrId
 from dual



если эти значения вставить напрямую в код, программа отработает
Код: plsql
1.
 where c.contractid in (3635082,3635514,3635522,3635525)
...
Рейтинг: 0 / 0
16.07.2018, 17:00
    #39674603
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
petrovichvanya,

строку в столбец
...
Рейтинг: 0 / 0
16.07.2018, 17:25
    #39674619
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
petrovichvanya,

ну так а чего "напрямую" вставляешь числа, а через параметр - строку?
...
Рейтинг: 0 / 0
16.07.2018, 17:39
    #39674622
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
спасибо, понял в чем проблема. нужно строку преобразовать в число
...
Рейтинг: 0 / 0
16.07.2018, 17:48
    #39674627
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
Код: plsql
1.
SELECT TO_NUMBER((select trim(',' from regexp_replace(GetRGItemValueEx('RETAIL\INSTANT_CARDACCOUNTID', null, 0), '(^|;)\d{3}=', ',')) from dual) ) FROM DUAL;


подскажите почему преобразование не работает, ошибка появляется "недействительный номер "
...
Рейтинг: 0 / 0
16.07.2018, 18:06
    #39674632
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
petrovichvanya,


Код: plsql
1.
2.
3.
4.
5.
6.
with src(txt) as 
(select '123=6543212;545=1234532;777=7864324;222=3422657' from dual)
select
  to_number(regexp_substr(txt, '(\d{3}=)(\d+)', 1, level, 'i', 2)) nmbr
from src
connect by level <= regexp_count(txt, '\d{3}=');
...
Рейтинг: 0 / 0
16.07.2018, 18:14
    #39674638
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
petrovichvanyaподскажите почему преобразование не работает, ошибка появляется "недействительный номер "

Что должен вернуть этот запрос?

Код: plsql
1.
select to_number('3635082,3635514,3635522,3635525') from dual;
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование строки / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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