Ada solusi yang jauh lebih mudah...
SQL Server mendukung tipe data XML, dan mendukung decoding entitas yang disandikan XML/HTML. Jika Anda hanya melemparkan string ke tipe data XML, Anda dapat menggunakan fungsi decode bawaan.
Itu akan terlihat seperti ini:
select cast('Q & A' as XML).value('.[1]','nvarchar(max)' );
Untuk mengubahnya menjadi fungsi agar mudah digunakan:
create function dbo.xmlDecode (@string nvarchar(max))
returns varchar(max)
begin
return cast(@string as XML).value('.[1]','nvarchar(max)' )
end;
Perlu diingat bahwa dalam contoh OP, string tampaknya telah dikodekan 3 kali berturut-turut. &
berubah menjadi &
lalu ke &
lalu ke &
. Akibatnya, untuk mendapatkan kembali string "asli", Anda harus menggunakan fungsi decode 3 kali.