如何删除oracle中的部分字符串

时间:2013-11-08 05:53:36

标签: sql oracle

输入数据:

abcdef_fhj_viji.dvc

预期产出:

fhj_viji.dvc

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

3 个答案:

答案 0 :(得分:9)

使用REPLACE方法

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

如果您希望此查询适用于您的表格

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

更新

UPDATE TABLE
   SET column = REPLACE(column,'abcde','') 

答案 1 :(得分:1)

select substr('abcdef_fhj_viji.dvc',instr('abcdef_fhj_viji.dvc','_')+1) from dual

所以,它全部取决于INSTR函数,定义从哪个位置和哪个出现,你将获得索引并将该索引传递给SUBSTR以获取你的字符串。

答案 2 :(得分: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]+_部分则取决于前缀包含的字符。在这里,我只包含大写和小写字母。