Вытащить данные из скобок SQL GP
Help! GreenPlum SQL
Есть поле с текстом, среди которого есть значение в скобках, перед котором стоит ключевое слово. Как вытащить значение в скобках и привести его в цифровое значение, длина значения и способ написания может отличаться (с пробелом или без )
Примеры текста:
283921 из них 2000 руб (5200;250; 9*100). Будем зачислять 1700 Зачисление (1 700) RUB
283321 ждем проверку, сз//вопрос 3000 зачисление 226 от 23.02.22 Зачисление (200) USD
Ключевое слово "зачисление" нужно вытащить и преобразовать в цифровое значение, в первом случае 1700, во втором случае 200
Найти ключевое словно получается через синтаксис strpos(l.log, 'Зачисление ('), но вот чтобы вытащить все что есть до закрывающей скобки и перевести в цифровое значание, при том что скобок в тексте может быть несколько и между цифрами могут быть пробелмы, вызывает трудности.
Ответы (1 шт):
Найти закрывающую скобку после позиции ключевого признака Зачисление ( в Вашем примере
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 |
Ведущие и замыкающие пробелы уберите по необходимости.