Es gibt auch noch die
Levenshtein-Distanz, welcher die Anzahl der nötigen Änderungen zählt, welche man braucht um aus dem einen den anderen String zu machen.
Je kleiner die Zahl, umso gleicher sind die Strings.
Prozent = 100 * LevenshteinDistanz div Max(Length(Str1), Length(Str2))
.
Auch SoundEx prüft auf gewisse Ähnlichkeiten.
Wenn Groß-/Kleinschreibung egal sind und der Algorithmus dieses mit auswertet, dann halt vorher noch beide String durch AnsiUpperCase jagen.
Wenn Sonderzeichen egal sind und diese ebenfalls vom Algo beachtet werden, dann diese eben vorher entfernen/rausfiltern.
(oder den Algo entsprechend abändern)
Also im Prinzip müßte man erstmal genau definieren was du unter "gleich" verstehst
und daraus leitet sich dann der nötige Algorithmus ab, welchen man verwenden könnte.