Existuje mnohem jednodušší řešení...
SQL Server podporuje datový typ XML a podporuje dekódování entit kódovaných v XML/HTML. Pokud právě přetypujete řetězec do datového typu XML, můžete použít vestavěnou funkci dekódování.
To by vypadalo takto:
select cast('Q & A' as XML).value('.[1]','nvarchar(max)' );
Chcete-li jej změnit na funkci pro snadné použití:
create function dbo.xmlDecode (@string nvarchar(max))
returns varchar(max)
begin
return cast(@string as XML).value('.[1]','nvarchar(max)' )
end;
Mějte na paměti, že v příkladu OP se zdá, že řetězec byl zakódován 3krát za sebou. &
se změnil na &
poté do &
a poté do &
. Výsledkem je, že pro získání „původního“ řetězce zpět musíte použít funkci dekódování třikrát.