如何在 SQL Server 中查询相似度百分比?
Posted
技术标签:
【中文标题】如何在 SQL Server 中查询相似度百分比?【英文标题】:How to make a a query of similarity percentage in SQL Server? 【发布时间】:2017-08-31 21:31:36 【问题描述】:我有一个流程,在我将数据提交到数据库之前,我必须检查数据是否已经存在于数据库中。如果它发现了相似性,我想显示它的相似性百分比。 我有一个类似的查询:
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%。你知道怎么做吗?
【问题讨论】:
【参考方案1】:假设匹配百分比基于匹配的属性数量,您可以使用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
【讨论】:
我试过了,但是match_percentage显示的都是空值 @hendraspt - 哎呀。错过了else
部分。现在更新了。请再试一次?以上是关于如何在 SQL Server 中查询相似度百分比?的主要内容,如果未能解决你的问题,请参考以下文章