SQL Update alle Attribute mit Wert NULL

Hallo, ich versuche alle Attribute mit Wert NULL durch ‚-‘ zu ersetzen.
Hat jemand ne Idee, warum das nicht funktioniert?
Kann man bei Update als Column keine Variable nutzen?

declare @anz INT;
declare @i INT;
declare @attr char(11);
set @anz = (SELECT Count(COLUMN_NAME)  
  FROM INFORMATION_SCHEMA.COLUMNS 
  WHERE table_name = 'MetaData' and COLUMN_NAME like 'Attribute%');

set @i = 1;
select @anz;
while @i <= @anz 
	begin
		set @attr = 'Attribute'+format(@i, '00');
		Update MetaData set @attr = coalesce(@attr, '-');
		set @i +=1;
	end

Moin.

Richtig, du kannst auf diese Weise keine Variablen verwenden.
Du kannst aber das gesamte UPDATE-Statement als String zusammenbauen und einer Variablen speichern. Dann mit EXEC() ausführen.

SET @stmt = 'update Metadata set '  + @attr + ' = coalesce(' + @attr + ', i)'

EXEC (@stmt)

Super und Danke für die schnelle Antwort :wink: