如果它不存在,请将一列添加到表中

我想为MS SQL Server编写一个查询,将一列添加到表中。 但我不想要任何错误显示,当我运行/执行以下查询。

我正在使用这种查询来添加一个表…

IF EXISTS ( SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]') AND TYPE IN (N'U') ) 

但是我不知道如何为列写这个查询。

您可以使用sys.columns表中的sys.objects类似的结构。

 IF EXISTS ( SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[Person]') AND name = 'ColumnName' ) 
 IF COL_LENGTH('table_name', 'column_name') IS NULL BEGIN ALTER TABLE table_name ADD [column_name] INT END 

另一种select。 我更喜欢这种方法,因为它的写作较less,但两者完成同样的事情。

 IF COLUMNPROPERTY(OBJECT_ID('dbo.Person'), 'ColumnName', 'ColumnId') IS NULL BEGIN ALTER TABLE Person ADD ColumnName VARCHAR(MAX) NOT NULL END 

我也注意到你们正在寻找桌子确实存在的地方

  if COLUMNPROPERTY( OBJECT_ID('dbo.Person'),'ColumnName','ColumnId') is not null 

/ *检查表中是否存在列* /

  IF COL_LENGTH('TABLE_NAME','COLUMN_NAME') IS NULL BEGIN ALTER TABLE .... /*COLUMN DOES NOT EXIST OR CALLER DOES NOT HAVE PERMISSION TO VIEW THE OBJECT*/ END 
 IF NOT EXISTS (SELECT 1 FROM SYS.COLUMNS WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]') AND name = 'DateOfBirth') BEGIN ALTER TABLE [dbo].[Person] ADD DateOfBirth DATETIME END