Oracle子串选择问题

时间:2015-04-10 13:49:02

标签: oracle select substring trim

卡住了

select * 
from table a 
where ID like  'delr' || trim(substr(busns_asct_id,5)) || '%';

根据以上查询,我得到的记录如" delr112591-8218-1"但是我需要消除ID,例如" delr60201-T,delr99999-A"和" delr1 -5"

如何消除这种情况?

2 个答案:

答案 0 :(得分:0)

这是如何处理Oracle中的LIKE:

  • 模式中的下划线_恰好匹配一个字符
  • 模式中的百分号%可以匹配零个或多个字符
  • ESCAPE '\'_%转义您想要的任何字符,我在这里使用了\

要匹配delr112591-8218-1,您可以使用

like  'delr' || trim(substr(busns_asct_id,5)) || '-____-_';

通过将_替换为任何其他字符而获得的任何其他字符串都将匹配,因此“delr60201-T”,“delr99999-A”和“delr1 -5”将不匹配,如果您想要更准确的内容,你必须使用REGEX。

LIKE condition in Oracle

REGEX in Oracle

答案 1 :(得分:0)

select * 
from table a 
where ID like  'delr' || trim(substr(busns_asct_id,5)) || '-_' or ID like 'delr_-_;