Hay una solución mucho más fácil...
SQL Server admite el tipo de datos XML y admite la decodificación de entidades codificadas en XML/HTML. Si solo convierte la cadena al tipo de datos XML, puede usar la función de decodificación integrada.
Eso se vería así:
select cast('Q & A' as XML).value('.[1]','nvarchar(max)' );
Para convertirlo en una función de fácil uso:
create function dbo.xmlDecode (@string nvarchar(max))
returns varchar(max)
begin
return cast(@string as XML).value('.[1]','nvarchar(max)' )
end;
Tenga en cuenta que en el ejemplo de OP, la cadena parece haber sido codificada 3 veces seguidas. &
se convirtió en &
luego en &
y luego en &
. Como resultado, para recuperar la cadena "original", debe usar la función de decodificación 3 veces.