如何删除oracle中的随机子字符串

时间:2014-03-27 09:45:50

标签: oracle oracle10g substring

我需要你对给定问题的帮助

我有一个包含列工人的表,它已经提供了数据

thorax1 [00400 - 00479] head1 [00100 - 00228] lab66 [lab661]

the whole date is in single column

我们有一个页面,我们可以命令删除任何给定的字符串。

删除记录时我们只给出方括号内的代码。

例如,如果我们需要删除 head1 [00100 - 00228] ,我们只提供 00100 - 00228 来删除字符串。

这里我的问题是写一个查询,我们可以给 00100 - 00228 00400 - 00479 删除 head1 [00100 - 00228] thorax1 [00400 - 00479] 记录。

1 个答案:

答案 0 :(得分:5)

SQL> with t(col) as (
  2  select 'thorax1 [00400 - 00479] head1 [00100 - 00228] lab66 [lab661]' from dual
  3  )
  4  select regexp_replace(col,'\s{0,1}[[:alnum:]]* \[00100 - 00228\]','') from t
  5  ;

REGEXP_REPLACE(COL,'\S{0,1}[[:ALNUM:]]                                          
--------------------------------------                                          
thorax1 [00400 - 00479] lab66 [lab661]                                          

SQL> with t(col) as (
  2  select 'thorax1 [00400 - 00479] head1 [00100 - 00228] lab66 [lab661]' from dual
  3  )
  4  select regexp_replace(col,'\s{0,1}[[:alnum:]]* \[00400 - 00479\]','') from t
  5  /

REGEXP_REPLACE(COL,'\S{0,1}[[:ALNUM:]                                           
-------------------------------------                                           
 head1 [00100 - 00228] lab66 [lab661]                                           

SQL> with t(col) as (
  2  select 'thorax1 [00400 - 00479] head1 [00100 - 00228] lab66 [lab661]' from dual
  3  )
  4  select regexp_replace(col,'\s{0,1}[[:alnum:]]* \[lab661\]','') from t
  5  /

REGEXP_REPLACE(COL,'\S{0,1}[[:ALNUM:]]*\[LAB6                                   
---------------------------------------------                                   
thorax1 [00400 - 00479] head1 [00100 - 00228]                                   

在10G中尝试这个(将“COL”列名称从因子列表移动到SELECT语句):

with t as (
select 'thorax1 [00400 - 00479] head1 [00100 - 00228] lab66 [lab661]' col from dual
)
select regexp_replace(col,'\s{0,1}[[:alnum:]]* \[lab661\]','') from t
/