Nebudete schopni provádět přesné úpravy pomocí SQL. Potřebujete algoritmus, jako je Unix diff na souborech (což funguje na úrovni řádku). Na úrovni postavy by byl algoritmus určitou variací Levenshteinovy vzdálenosti
. Pokud diff vyhovuje vašim potřebám, můžete si jej stáhnout, napsat uloženou proceduru pro jeho vyvolání a poté ji použít v databázi. To by bylo poměrně drahé.
Část vaší otázky týkající se údržby různých verzí je mnohem jednodušší. Přidal bych dva sloupce EffDate a EndDate na každý záznam. Nejnovější verzi získáte vyhledáním EndDate is NULL a najít verzi aktivní v danou chvíli. Merge je obecně užitečné pro údržbu takové tabulky.