我有一个过程,在将数据提交到数据库之前,我必须检查数据是否已经存在于数据库中。如果它找到相似性,我想显示它的相似性百分比。
我有一个查询,如:

SELECT [NAME]
      ,[IDENTITY_NUMBER]
      ,[BIRTHDATE]
      ,[SEX]
FROM [USER]
WHERE [NAME] = @NAME
OR [IDENTITY_NUMBER] = @IDENTITY_NUMBER
OR [BIRTHDATE] = @BIRTHDATE
OR [SEX] = @SEX

我想让我输入的名称和数据库中存在的名称之间只有一个相似的名称,它显示出25%的相似性。如果只有名字和生日,则为50%。如果都相似,则为100%。你知不知道怎么?

最佳答案

假设匹配百分比基于匹配的属性数,则可以使用case:

select [NAME],
    [IDENTITY_NUMBER],
    [BIRTHDATE],
    [SEX],
    case when [NAME] = @NAME then 25 else 0 end
    + case when [IDENTITY_NUMBER] = @IDENTITY_NUMBER then 25 else 0 end
    + case when [BIRTHDATE] = @BIRTHDATE then 25 else 0 end
    + case when [SEX] = @SEX then 25 else 0 end as match_percentage
from [USER]
where [NAME] = @NAME
    or [IDENTITY_NUMBER] = @IDENTITY_NUMBER
    or [BIRTHDATE] = @BIRTHDATE
    or [SEX] = @SEX

关于mysql - 如何在SQL Server中查询相似百分比?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43245233/

10-11 02:58