2017-04-06 2 views
4

Ich habe einen Prozess, bevor ich die Daten an die Datenbank senden muss ich überprüfen, ob die Daten bereits in der Datenbank vorhanden sind oder nicht. Und wenn es die Ähnlichkeit gefunden hat, möchte ich den Prozentsatz der Ähnlichkeit davon anzeigen. Ich habe eine Abfrage wie:Wie wird eine Abfrage des Ähnlichkeitsprozentsatzes in SQL Server durchgeführt?

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

ich machen möchte, wenn nur der Name zwischen dem Namen, den I-Eingang und der Namen, der in der Datenbank vorhanden ist, zeigt es 25% ähnlich ähnlich ist. wenn nur der Name und das Geburtsdatum, dann 50%. wenn alles ähnlich ist, dann 100%. Weißt du wie?

Antwort

4

das Spiel Prozentsatz Unter der Annahme basiert auf der Anzahl der Eigenschaften angepasst, können Sie case verwenden:

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

ich es versucht, aber die match_percentage zeigt alle Nullwert – hendraspt

+0

@hendraspt - Oops. Verpasste den "else" -Teil. Jetzt aktualisiert Bitte versuche es erneut? – GurV

Verwandte Themen