Điều này thực sự sẽ không hoạt động, vì bạn không thể có tên cột trong dấu ngoặc kép. Về cơ bản, những gì bạn đang làm là để SQL so sánh hai chuỗi sẽ luôn khác nhau, có nghĩa là bạn sẽ không bao giờ thực hiện cập nhật.
Nếu bạn phải làm theo cách này, bạn phải có một cái gì đó giống như ...
DECLARE @a INT
DECLARE @b VARCHAR
SET @a = 1
WHILE @a < 30
BEGIN
set @b = @a
exec sp_executesql N'UPDATE source set h = h + 'x_'[email protected] + N'
where y_'[email protected] + N' = ''Sold'''
SET @a = @a + 1
END
Nói chung, tuy nhiên, tôi không khuyến khích thực hành này. Tôi không phải là người thích SQL động được tạo bên trong một câu lệnh SQL khác cho bất kỳ loại mã sản xuất nào. Rất hữu ích để thực hiện các nhiệm vụ phát triển một lần, nhưng tôi không thích nó đối với mã có thể được thực thi bởi người dùng.