Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Update mit dynamischen Spaltennamen

Sie haben eine Mischung aus SQL und dynamischem SQL in Ihrer Abfrage für information_schema . Auch QUOTENAME ist in der where-Klausel nicht erforderlich und verhindert tatsächlich eine Übereinstimmung, da SQL Server column_name speichert , nicht [column_name] , in den Metadaten. Schließlich werde ich es in sys.columns ändern denn auf diese Weise sollten wir Metadaten in SQL Server ableiten . Versuchen Sie:

SELECT  @colnames += ',' + name 
  FROM Prod.sys.columns
  WHERE OBJECT_NAME([object_id]) = @objname
  AND name <> CASE WHEN @objname = 'TableXx' THEN 'ExcludeCol1' ELSE '' END
  AND name <> CASE WHEN @objname = 'TableYy' THEN 'ExcludeCol2' ELSE '' END;

SET @colnames = STUFF(@colnames, 1, 1, '');