Има много по-лесно решение...
SQL Server поддържа типа данни XML и поддържа декодиране на XML/HTML кодирани обекти. Ако просто прехвърлите низа към XML типа данни, можете да използвате вградената функция за декодиране.
Това би изглеждало така:
select cast('Q & A' as XML).value('.[1]','nvarchar(max)' );
За да го превърнете във функция за лесна употреба:
create function dbo.xmlDecode (@string nvarchar(max))
returns varchar(max)
begin
return cast(@string as XML).value('.[1]','nvarchar(max)' )
end;
Имайте предвид, че в примера на OP низът изглежда е бил кодиран 3 пъти подред. &
се превърна в &
след това в &
и след това в &
. В резултат на това, за да върнете „оригиналния“ низ, трябва да използвате функцията за декодиране 3 пъти.