我正在寻找部分匹配/可能匹配的可能解决方案(至少 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;
Run Code Online (Sandbox Code Playgroud)