返回 PostgreSQL

问题描述

我想返回 Postgresql 中第二次出现斜杠“/”(如果有)之前的所有字符。

输入列:

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

所需的输出列:

/apple
/
/mango
/avocado

有人可以帮忙吗?

解决方法

一种方法是regexp_replace()

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

Here 是一个 dbfiddle。

,

您可以将 substring() 与正则表达式一起使用:

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

另一种选择是 split_part()

select '/'||split_part(the_column,'/',2)
from data