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.