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

时间:2014-08-20 12:40:20

标签: postgresql replace

我的数据库中有6864#211a2b#3598等值。我试图只提取#之前和之后的部分,所以我会得到像

这样的东西
col1  | col2
-----------
6864  | 21
1a2b  | 3598

我试过

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

但这仅仅导致123#89。有谁知道我能这样做的方法吗?

3 个答案:

答案 0 :(得分:5)

试试这个:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

或者您可以使用strpos函数查找字符的第一个匹配项,然后使用substr检索该字符后的所有内容:

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

如果字符串中有多个#,则此方法有效。