我有这个查询:
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_num
是0077438843212123
。因此,上面的查询给出了结果8843212123
。
因此,基本上,该查询正在从var_called_num
中删除前缀(表中最长匹配项)。
现在我的桌子已经改变了。现在它只有1行,以逗号分隔。
修改表: INCOMING_ROUTING_PREFIX表的一行以逗号分隔:
1) 007743,007742
如何修改查询以实现相同的行为。需要从var_called_num
中删除最长匹配前缀。
答案 0 :(得分:2)
您可以分割值
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 ||'%';
答案 1 :(得分:2)
这里是一个选择:您必须将前缀分成几行,并在where
中使用它。
REGEXP_REPLACE
顺便说一句,为什么您将模型更改为比以前更差的版本?