Как получить строку, удалив среднюю часть в postgres - PullRequest
0 голосов
/ 07 марта 2020

Я хочу удалить среднюю строку, которая является датой, и получить значение в postgres

Пример
Из этого

ABC_XYZ_20200129041836.csv или 2ABC_XYZ_20200129041836.txt

к этому

ABC_XYZ.csv или 2ABC_XYZ.txt

Я попробовал это регулярное выражение [^_]+$. который выбирает все строки после последнего вхождения _, в том числе после . (например, _20200129041836.csv)

Ответы [ 2 ]

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

Одиночное вхождение легко обрабатывается с помощью regexp_replace, например:

select regexp_replace('ABC_XYZ_20200129041836.csv', '(.*)_[0-9]{14}([_.].*)', '\1\2');
0 голосов
/ 07 марта 2020

Я бы использовал REGEXP_REPLACE здесь:

SELECT
    filename,
    REGEXP_REPLACE(filename, '^([^_]+_[^_]+)_.*(\..*)$', '\1\2') AS filenameshort
FROM yourTable;

Стратегия здесь состоит в том, чтобы сопоставить и захватить первые две части имени файла, встречающиеся между разделителями _ в одной группе захвата, наряду с расширение во второй группе захвата. Затем мы заменяем только эту первую и вторую группу захвата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...