POSTGRESQL:删除特定字符之前的所有字符

5

我在我的数据库中有像6864#211a2b#3598这样的值。我尝试提取#前后的部分,以便获得如下结果:

col1  | col2
-----------
6864  | 21
1a2b  | 3598

我尝试了以下方法:

REPLACE('123#89', '%#', '')

但这只导致了123#89。有人知道我该怎么做吗?

3个回答

13

试试这个:

SELECT split_part('123#23','#',1) AS "COL1",split_part('123#23','#',2) AS "COL2"

7

或者您可以使用 strpos 函数找到第一个字符出现的位置,然后使用 substr 来获取该位置之后的所有内容:

SELECT substr(str, strpos(str,'#'));

如果字符串中有多个#,那么这个方法可以正常工作。


0
select (string_to_array(the_column, '#'))[1] as col1,
       (string_to_array(the_column, '#'))[2] as col2
from the_table

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接