Sie SOUNDEX
dies zu tun, verwenden könnte.
Beispieldaten;
CREATE TABLE #SampleData (Column1 int, Column2 varchar(10))
INSERT INTO #SampleData (Column1, Column2)
VALUES
(1,'blue car')
,(2,'red doll')
,(3,'blue cars')
,(4,'green tree')
,(5,'red dolly')
Der folgende Code wird soundex
verwenden, um eine Liste von ähnlichen Einträgen in column2
zu erstellen. Es verwendet dann eine andere Unterabfrage, um zu sehen, wie viele Vorkommen dieses soundex
Felds erscheinen;
SELECT
a.GroupingField
,a.Title
,b.SimilarFields
FROM (
SELECT
SOUNDEX(Column2) GroupingField
,MAX(Column2) Title --Just return a unique title for this soundex group
FROM #SampleData
GROUP BY SOUNDEX(Column2)
) a
LEFT JOIN (
SELECT
SOUNDEX(Column2) GroupingField
,COUNT(Column2) SimilarFields --How many fields are in the soundex group?
FROM #SampleData
GROUP BY SOUNDEX(Column2)
) b
ON a.GroupingField = b.GroupingField
WHERE b.SimilarFields > 1
Die Ergebnisse sehen wie folgt aus (ich habe das soundex
Feld links in Ihnen zu zeigen, wie es aussieht);
GroupingField Title SimilarFields
B400 blue cars 2
R300 red dolly 2
Einige weitere Lesung am soundex
https://msdn.microsoft.com/en-gb/library/ms187384.aspx
Edit: wie pro Ihren Antrag, die Originaldaten erhalten Sie auch in eine temporäre Tabelle schieben kann, um die Abfrage ich Ihnen gegeben habe, ändern ein setzen INTO
vor der FROM
Aussage;
Verwenden Sie dann die folgende Abfrage, um zurück zu Ihren ursprünglichen Daten zu verknüpfen;
SELECT
a.GroupingField
,a.Title
,a.SimilarFields
,b.Column1
,b.Column2
FROM #Duplicates a
JOIN #SampleData b
ON a.GroupingField = SOUNDEX(b.Column2)
ORDER BY a.GroupingField
würde das folgende Ergebnis geben; Denken Sie daran,
GroupingField Title SimilarFields Column1 Column2
B400 blue cars 2 1 blue car
B400 blue cars 2 3 blue cars
R300 red dolly 2 5 red dolly
R300 red dolly 2 2 red doll
zu
DROP TABLE #Differences
Sie würden definieren, was "Ähnlichkeit" ist es der Levenstein Entfernung? oder der Soundex? Ich denke, dass Sie eher einen einfacheren Ansatz wie die Gleichheit der ersten drei Buchstabengruppen anstreben? – Gar