我在我的数据库中有像6864#21
,1a2b#3598
这样的值。我尝试提取#前后的部分,以便获得如下结果:
col1 | col2 ----------- 6864 | 21 1a2b | 3598
我尝试了以下方法:
REPLACE('123#89', '%#', '')
但这只导致了123#89。有人知道我该怎么做吗?
我在我的数据库中有像6864#21
,1a2b#3598
这样的值。我尝试提取#前后的部分,以便获得如下结果:
col1 | col2 ----------- 6864 | 21 1a2b | 3598
我尝试了以下方法:
REPLACE('123#89', '%#', '')
但这只导致了123#89。有人知道我该怎么做吗?
试试这个:
SELECT split_part('123#23','#',1) AS "COL1",split_part('123#23','#',2) AS "COL2"
或者您可以使用 strpos
函数找到第一个字符出现的位置,然后使用 substr
来获取该位置之后的所有内容:
SELECT substr(str, strpos(str,'#'));
如果字符串中有多个#
,那么这个方法可以正常工作。
select (string_to_array(the_column, '#'))[1] as col1,
(string_to_array(the_column, '#'))[2] as col2
from the_table