2012-03-19 54 views
-1

我有3条规则,这是字符串'483 ??','48310 * ','48 *',我有一个源字符串'483102334'必须与上述规则匹配才能找到匹配最近的规则。在这个例子中,最接近的匹配规则是'48310 *',因为它匹配我的源字符串中的大部分数字。我想在PL/SQL中实现这一点。请帮忙!如何做一个字符串与多个相似的字符串,以找到最接近的匹配

+0

@ akash88我想用'UTL_MATCH.edit_distance(rule_name,source_string)'来满足我的要求。任何类型的建议将不胜感激! – Arcs 2012-03-19 07:07:23

回答

1

类似这样的内容适用于您提供的示例数据。如果你想 '?'与'*'的处理方式不同,但是,您必须提供更多的细节。

SQL> ed 
Wrote file afiedt.buf 

    1 with x as (
    2 select '483??' pattern from dual union all 
    3 select '48310' pattern from dual union all 
    4 select '48*' pattern from dual 
    5 ) 
    6 select pattern 
    7 from (
    8  select pattern, 
    9    rank() over (order by utl_match.edit_distance(pattern, '483102334')) rnk 
10   from x) 
11* where rnk = 1 
SQL>/

PATTE 
----- 
48310 
+0

感谢您的回答。 :) – Arcs 2012-03-19 12:50:04

相关问题