如何匹配具有多个相似字符串的字符串以找到最接近的匹配项[关闭]
Posted
技术标签:
【中文标题】如何匹配具有多个相似字符串的字符串以找到最接近的匹配项[关闭]【英文标题】:How to do a match a string with multiple similar strings to find a closest match [closed] 【发布时间】:2012-03-19 06:30:27 【问题描述】:我有 3 条规则,它们是像 '483??'、'48310*'、'48*' 这样的字符串,并且我有一个必须与上述匹配的源字符串 '483102334'规则来查找匹配最接近的规则。在此示例中,最接近的匹配规则是 '48310*',因为它与我的源字符串中的大多数数字匹配。我想在 PL/SQL 中实现这一点。请帮忙!
【问题讨论】:
@akash88 我正在尝试使用UTL_MATCH.edit_distance(rule_name, source_string)
来满足我的要求。任何形式的建议将不胜感激!
【参考方案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
【讨论】:
感谢您的回答。 :)以上是关于如何匹配具有多个相似字符串的字符串以找到最接近的匹配项[关闭]的主要内容,如果未能解决你的问题,请参考以下文章