Có một giải pháp dễ dàng hơn nhiều ...
SQL Server hỗ trợ kiểu dữ liệu XML và nó hỗ trợ giải mã các thực thể được mã hóa XML / HTML. Nếu bạn chỉ truyền chuỗi sang kiểu dữ liệu XML, bạn có thể sử dụng hàm giải mã tích hợp sẵn.
Nó sẽ trông như thế này:
select cast('Q & A' as XML).value('.[1]','nvarchar(max)' );
Để biến nó thành một hàm để dễ sử dụng:
create function dbo.xmlDecode (@string nvarchar(max))
returns varchar(max)
begin
return cast(@string as XML).value('.[1]','nvarchar(max)' )
end;
Hãy nhớ rằng trong ví dụ của OP, chuỗi dường như đã được mã hóa 3 lần liên tiếp. &
được biến thành &
sau đó thành &
và sau đó vào &
. Do đó, để lấy lại chuỗi "ban đầu", bạn phải sử dụng hàm giải mã 3 lần.