Schreibfehler?

Maik20

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem ich habe eine Tabelle mit einer Spalte "Wort". Die Spalte verfügt über einen Primärindex. Jetzt sind jedoch einige Begriffe in der Tabelle doppelt vorhanden (einmal mit einem Schreibfehler). Gibt es in mySQL die möglichkeit nach ähnlichen Begriffen (z.B. ein Zeichen ist anders, zwei Zeichen sind anders) zu groupen?

Mir ist schon klar, dass ich selbst entscheiden muss ist es ein Schreibfehler oder nicht, nur würde man so schneller vorankommen.
 
Eine Zeichen-für-Zeichen-Überprüfung gibt es direkt nicht, eventuell aber beherrscht MySQL Bit-Operationen. Mit diesen kann (sofern es denn geht) leicht überprüft werden, wie viele Zeichen sich beispielsweise in der Character-Sequence unterscheiden (via Bit-AND).
Alternativ dazu kannst du sämtliche Daten auslesen und in einer Sprache deiner Wahl überprüfen lassen (das was du wahrscheinlich vermeiden möchtest).

Ein anderer Ansatz wäre folgender:
SQL:
SELECT
	`a`.`Wort` AS `referenz`,
	`b`.`Wort` AS `check`
FROM
	`table` AS `a`
RIGHT JOIN
	`table` AS `b` ON
	`a`.`Wort` != `b`.`Wort` AND
	`a`.`Wort` SOUNDS LIKE `b`.`Wort`
ORDER BY
	`a`.`Wort` ASC
Man joint die Tabelle mit sich selbst an jenen Stellen, an denen die Strings (zumindest im Englischen) ähnlich klingen. Den Levensthein-Algorithmus musst du dir unter Umständen selbst schreiben, oder über eine individuelle Compilierung einbinden, sofern du diese lieber als SOUNDEX verwenden möchtest.
 
Zurück