首页 > 解决方案 > 逗号分隔的字符串匹配

问题描述

我有这个查询:

SELECT regexp_replace (var_called_num, '^' ||ROUTING_PREFIX) INTO Num  
FROM   INCOMING_ROUTING_PREFIX
WHERE  var_called_num LIKE ROUTING_PREFIX ||'%';`

INCOMING_ROUTING_PREFIX 表有两行

1) 007743
2) 007742

var_called_num0077438843212123。所以上面的查询给出了结果8843212123。所以基本上,查询是从var_called_num.

现在我的桌子变了。现在它只有 1 行以逗号分隔。

修改表:INCOMING_ROUTING_PREFIX 表有一行,以逗号分隔:

1) 007743,007742

如何修改查询以实现相同的行为。需要从 中删除最长匹配前缀var_called_num

标签: sqloracleoracle11g

解决方案


您可以拆分值

with test as (
select regexp_substr('007743,007742','[^,]+', 1, level) as ROUTING_PREFIX from dual
  connect by regexp_substr('007743,007742S', '[^,]+', 1, level) is not null
  )

并使用您选择的视图

SELECT regexp_replace ('0077438843212123', '^' ||ROUTING_PREFIX)  
  FROM test WHERE '0077438843212123' LIKE ROUTING_PREFIX ||'%';  

推荐阅读