部分匹配的可能解决方案(至少n个字段中的p个匹配)

我正在寻找部分匹配/可能匹配的可能解决方案(至少 n 个字段中的 p 个匹配)。

我们有一个数据库(Oracle),其中填充了个人记录,如下所示:

  • 名,
  • 姓,
  • 生日,
  • 公民号,
  • 市民广场,
  • 出生地,
  • 另一个号码,
  • 区。

(*) 请记住,没有唯一标识符,并非所有字段都可以提供,某些字段可能是可选的(空)。

如果 8 个字段中至少有 5 个匹配,我们正在寻找一种解决方案来根据数据库记录检查给定人员。

是否有可能使用 SQL、SQL/Java 的解决方案,或者我们应该寻找 nosql 或弹性搜索解决方案?

先感谢您。

回答

您可以使用where和计算匹配项:

select t.*
from t
where ( (case when t.firstname = :firstname then 1 else 0 end) +
        (case when t.firstname = :lastname then 1 else 0 end) +
        . . .
      ) >= 5;

  • Awesome thinking!

以上是部分匹配的可能解决方案(至少n个字段中的p个匹配)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>