Der er en meget nemmere løsning...
SQL Server understøtter XML-datatypen, og den understøtter afkodning af XML/HTML-kodede enheder. Hvis du bare caster strengen til XML-datatypen, kan du bruge den indbyggede afkodningsfunktion.
Det ville se sådan ud:
select cast('Q & A' as XML).value('.[1]','nvarchar(max)' );
For at gøre det til en funktion til nem brug:
create function dbo.xmlDecode (@string nvarchar(max))
returns varchar(max)
begin
return cast(@string as XML).value('.[1]','nvarchar(max)' )
end;
Husk, at i OP's eksempel ser strengen ud til at være blevet kodet 3 gange i træk. &
blev omdannet til &
derefter ind i &
og derefter ind i &
. Som et resultat, for at få den "originale" streng tilbage, skal du bruge afkodningsfunktionen 3 gange.