Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

sql актуализация с динамични имена на колони

Имате комбинация от SQL и динамичен SQL във вашата заявка срещу information_schema . Също QUOTENAME не е необходимо в клаузата where и всъщност изобщо ще предотврати съвпадение, тъй като SQL Server съхранява column_name , а не [column_name] , в метаданните. Накрая ще го променя на sys.columns тъй като това е начинът трябва да извличаме метаданни в SQL Server . Опитайте:

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, '');



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете няколко реда

  2. Какъв е най-добрият начин за съхраняване на координати (дължина/ширина, от Google Maps) в SQL Server?

  3. SQL Server 2008, различни клаузи WHERE с една заявка

  4. Ефикасен начин за получаване на @@rowcount от заявка с помощта на row_number

  5. SQL CASE и локални променливи