postgres中的字符串提取

String extraction in postgres

在一列中有这个值,下面我展示了我用来从该字段中提取数据。

with A4 as 
(
select 'govinda j/INDIA_MH/9975215025' as employee_name from dual
)
select employee_name , 
TRIM(SUBSTR(upper(A4.employee_name),1,INSTR(A4.employee_name,'/',1,1)-1)) AS employee_name1,
  TRIM(SUBSTR(upper(A4.employee_name),INSTR(A4.employee_name,'/',1,1)+1,INSTR(A4.employee_name,'_',1,1)-INSTR(A4.employee_name,'/',1,1)-1)) AS Country,
  TRIM(SUBSTR(upper(A4.employee_name),INSTR(A4.employee_name,'_',1,1)+1,INSTR(A4.employee_name,'/',1,2)-INSTR(A4.employee_name,'_',1,1)-1)) AS State

   from A4

输出

EMPLOYEE_NAME                   EMPLOYEE_NAME1   COUNTRY       STATE
govinda j/INDIA_MH/9975215025   GOVINDA J        INDIA         MH

现在我们的数据库系统已经改变了,我正在努力在 postgres 中实现同样的目标。

一个选项是split_part():

select split_part(employee_name, '/', 1) as employee_name1,
       split_part(split_part(employee_name, '/', 2), '_', 1) as country,
       split_part(split_part(employee_name, '/', 2), '_', 2) as state
from a4