Проверьте, существует ли столбец перед добавлением таблицы в таблицу SQL без изменения таблицы для каждого столбца

Я пытаюсь изменить таблицу, чтобы добавить три новых столбца, но я хотел бы проверить, если имена столбцов перед добавлением и если они уже существуют, просто пропустите else, добавьте столбец,

ALTER TABLE TESTTABLE ADD [ABC] [int] , [XYZ] [ [int] , [PQR] [int] GO 

У меня есть сценарий ниже

 IF NOT EXISTS( SELECT * FROM sys.columns WHERE Name = N'ABC' AND Object_ID = Object_ID(N'TESTTABLE')) BEGIN ALTER TABLE TESTTABLE ADD [ABC] int END 

но это нужно сделать для каждого столбца, есть ли лучший способ достичь этого?

Если вы уверены, что эти столбцы всегда будут добавляться одновременно, вы можете использовать IN для проверки существования любого, а затем добавить их все, если их не существует:

 IF NOT EXISTS( SELECT * FROM sys.columns WHERE Name IN (N'ABC',N'XYZ',N'PQR') AND Object_ID = Object_ID(N'TESTTABLE')) BEGIN ALTER TABLE TESTTABLE ADD [ABC] int, [XYZ] int, [PQR] int END 

Обратите внимание, что это не будет выполнено, если какой-либо из ваших столбцов уже существует. Если есть вероятность, что это произойдет, вам нужно будет сделать каждый чек индивидуально, как вы уже делаете.

Простой и грязный, вы напрямую используете имена столбцов в условии с COL_LENGTH (который возвращает NULL если столбец не существует, то есть «при ошибке»):

 DECLARE @tb varchar(30) = 'TESTTABLE' IF COL_LENGTH(@tb, 'ABC') IS NOT NULL AND COL_LENGTH(@tb, 'XYZ') IS NOT NULL AND COL_LENGTH(@tb, 'PQR') IS NOT NULL BEGIN ALTER TABLE TESTTABLE ADD [ABC] int END 
Давайте будем гением компьютера.