【问题标题】:How to make a a query of similarity percentage in SQL Server?如何在 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%。你知道怎么做吗?

【问题讨论】:

    标签: mysql sql sql-server stored-procedures


    【解决方案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 部分。现在更新了。请再试一次?
    猜你喜欢
    • 2019-08-20
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多