2017-04-06 92 views
4

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

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%。你知不知道怎么?

回答

4

假设匹配百分比是基于匹配性能的数量,你可以使用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 
+0

我已经尝试过了,但match_percentage显示所有空值 – hendraspt

+0

@hendraspt - 哎呀。错过了'else'部分。现在更新。请再试一次? – GurV