10

输入数据:

abcdef_fhj_viji.dvc

预期输出:

fhj_viji.dvc

要修剪的部分不是恒定的。

4

3 回答 3

18

使用REPLACE方法

Select REPLACE('abcdef_fhj_viji.dvc','abcde','')

如果您想要此查询用于您的表

Select REPLACE(column,'abcde','') from myTable

对于更新

UPDATE TABLE
   SET column = REPLACE(column,'abcde','') 
于 2013-11-08T05:55:38.813 回答
4
select substr('abcdef_fhj_viji.dvc',instr('abcdef_fhj_viji.dvc','_')+1) from dual

因此,这完全取决于INSTR函数,定义从哪个位置和哪个出现,您将获取索引并将该索引传递SUBSTR给您的字符串。

于 2013-11-08T06:29:21.813 回答
0

既然你没有提供很多信息,我会假设一些。

假设您想要删除某个字符串的前缀。一个很好的方法是使用正则表达式。有一个名为 regexp_replace 的函数,它可以根据模式找到字符串的子字符串,并将其替换为不同的字符串。在 PL/SQL 中,您可以使用 regexp_replace 为自己编写一个函数,如下所示:

function deletePrefix(stringName in varchar2) return varchar2 is
begin
  return regexp_replace(stringName, '^[a-zA-Z]+_', '');
end;

或者只是在普通的 sql 中使用它,例如:

regexp_replace(stringName, '^[a-zA-Z]+_', '');

stringName是您要处理的字符串,^[a-zA-Z]+_部分取决于前缀包含的字符。这里我只包括大写和小写字母。

于 2020-12-07T09:04:46.510 回答