Я хочу вернуть все символы до второго появления символа косой черты '/' (если есть) в PostgreSQL.

Столбец ввода:

/apple/orange/banana
/
/mango
/avocado/kiwi

Желаемый выходной столбец:

/apple
/
/mango
/avocado

Кто-нибудь может помочь с этим, пожалуйста?

1
htols 1 Мар 2021 в 18:39

2 ответа

Лучший ответ

Один из способов - regexp_replace():

select t.*,
       regexp_replace(col, '^([^/]*/[^/]*)/.*$', '\1')
from t;

Вот скрипка db <>.

0
Gordon Linoff 1 Мар 2021 в 15:42

Вы можете использовать substring() с регулярным выражением:

select substring(the_column from '(/\w*)')
from the_table

Другой альтернативой может быть split_part()

select '/'||split_part(the_column, '/', 2)
from data
0
a_horse_with_no_name 1 Мар 2021 в 15:45