Как извлечь номер счета между разделителями - PullRequest
0 голосов
/ 22 марта 2020

Номера счетов могут содержать 1 или минус символы в начале и 1 или более -n номеров версий в конце. Как извлечь основную часть номера счета? Для этого начальные символы должны быть удалены, а конечные -n варианты также должны быть удалены.

Например,

 1002546556
 -1002546556
 ---1002546556
 1002546556-1-K
 -1002546556-2
 --1002546556-2-3

для всех этих чисел результат должен быть

1002546556

I пробовал

select regexp_replace(invoicenumber, '-.*', '', 'g') from invoice

, но если номер счета начинается с -, он возвращает пустое значение.

Использование

PostgreSQL 9.3.5, скомпилировано в Visual C ++ build 1600, 64-битный * * 1016

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Вы можете использовать regexp_match():

select (regexp_match('1002546556-1-K', '[0-9]+'))[1]

Возвращает первую строку цифр в строке.

Здесь - это db <> скрипка .

1 голос
/ 22 марта 2020

Нет необходимости в регулярных выражениях. Это будет делать, например:
select split_part(ltrim(invoicenumber,'-'),'-',1)

С уважением,
Bjarni

...