Sql 如何通过oracle regexp_substr()提取“/”字符前面的部分

Sql 如何通过oracle regexp_substr()提取“/”字符前面的部分,sql,oracle,substr,Sql,Oracle,Substr,我想在1/之前提取零件,我怎么做 SELECT REGEXP_SUBSTR('prAct1-03/cPMI-01/iPEPC9-01/t35s-08','(pr.*)/',1,1) as promoter FROM dual; 不起作用,而且oracle似乎不支持向前看和向后看。 谢谢 我只想在这里使用基本字符串函数: SELECT SUBSTR(col, 1, INSTR(col, '/') - 1) AS first_part FROM yourTable; 如果您确实想使用正

我想在1/之前提取零件,我怎么做

 SELECT REGEXP_SUBSTR('prAct1-03/cPMI-01/iPEPC9-01/t35s-08','(pr.*)/',1,1) as promoter 
   FROM dual;
不起作用,而且oracle似乎不支持向前看和向后看。
谢谢

我只想在这里使用基本字符串函数:

SELECT SUBSTR(col, 1, INSTR(col, '/') - 1) AS first_part
FROM yourTable;
如果您确实想使用正则表达式,请尝试:

SELECT REGXP_SUBSTR(col, '^[^/]+')
FROM yourTable;

我只想在这里使用基本字符串函数:

SELECT SUBSTR(col, 1, INSTR(col, '/') - 1) AS first_part
FROM yourTable;
如果您确实想使用正则表达式,请尝试:

SELECT REGXP_SUBSTR(col, '^[^/]+')
FROM yourTable;
一个选项使用REGEXP_REPLACE函数:

SELECT REGEXP_REPLACE('prAct1-03/cPMI-01/iPEPC9-01/t35s-08','(\S)(/.*)','\1') AS promoter
  FROM dual;
一个选项使用REGEXP_REPLACE函数:

SELECT REGEXP_REPLACE('prAct1-03/cPMI-01/iPEPC9-01/t35s-08','(\S)(/.*)','\1') AS promoter
  FROM dual;

请使用下面的查询

select substr('prAct1-03/cPMI-01/iPEPC9-01/t35s-08', 0, instr('prAct1-03/cPMI-01/iPEPC9-01/t35s-08', '/')-1) as promoter from dual;

请使用下面的查询

select substr('prAct1-03/cPMI-01/iPEPC9-01/t35s-08', 0, instr('prAct1-03/cPMI-01/iPEPC9-01/t35s-08', '/')-1) as promoter from dual;
是的,元字符弄乱了你的正则表达式。如果您采用这样一种非贪婪的方法,regexp_substr'prAct1-03/cPMI-01/iPEPC9-01/t35s-08','pr.*?/',1,1,null,1,您的模式可以工作。是的,。元字符会弄乱您的正则表达式。如果您采用这样的非贪婪方法,regexp_substr'prAct1-03/cPMI-01/iPEPC9-01/t35s-08','pr.*?/',1,1,null,1,您的模式就可以工作。只要[^/]+就可以了,因为起始位置和发生位置都默认为1。Small technicallity=只要[^/]+就可以了,因为起始位置和发生位置都默认为1。小技巧=