Вытащить данные из скобок SQL GP

Рейтинг: 0Ответов: 1Опубликовано: 05.02.2023

Help! GreenPlum SQL

Есть поле с текстом, среди которого есть значение в скобках, перед котором стоит ключевое слово. Как вытащить значение в скобках и привести его в цифровое значение, длина значения и способ написания может отличаться (с пробелом или без )

Примеры текста:

283921 из них 2000 руб (5*200;2*50; 9*100). Будем зачислять 1700 Зачисление (1 700) RUB

283321 ждем проверку, сз//вопрос 3000 зачисление 226 от 23.02.22 Зачисление (200) USD

Ключевое слово "зачисление" нужно вытащить и преобразовать в цифровое значение, в первом случае 1700, во втором случае 200

Найти ключевое словно получается через синтаксис strpos(l.log, 'Зачисление ('), но вот чтобы вытащить все что есть до закрывающей скобки и перевести в цифровое значание, при том что скобок в тексте может быть несколько и между цифрами могут быть пробелмы, вызывает трудности.

Ответы

▲ 0Принят

Найти закрывающую скобку после позиции ключевого признака Зачисление ( в Вашем примере

create table test(log varchar(100));
insert into test values('Зачисление (100)'),('пример 2 Зачисление ( 111 )');
select substring(l.log  
         ,strpos(l.log, 'Зачисление (') +length('Зачисление(') +1 
         ,strpos(substring(l.log,strpos(l.log, 'Зачисление (')+length('Зачисление ('))
            ,')')-1
         )
from test l
log substring
Зачисление (100) 100
пример 2 Зачисление ( 111 )  111

Ведущие и замыкающие пробелы уберите по необходимости.