如何匹配具有多个相似字符串的字符串以找到最接近的匹配项[关闭]

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

【讨论】:

感谢您的回答。 :)

以上是关于如何匹配具有多个相似字符串的字符串以找到最接近的匹配项[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

找出两个字符串的相似程度

使用 awk sub 以数字方式为字符串添加前缀而不更改计数状态最多 5 个匹配“在每行具有多个匹配项的文本文件中”

SQL中最接近的部分字符串匹配

BigQuery,SQL - 表之间最接近的一对

找到与输入最相似的字符串的最快方法?

用于以任何出现顺序匹配具有多个单词的列中的字符串的 Coredata 谓词