若是它不存在,我须要添加一个特定的列。 我有相似如下内容,但始终返回false: 数据库
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'myTableName' AND COLUMN_NAME = 'myColumnName')
如何检查SQL Server数据库表中是否存在列? spa
我须要相似的SQL SERVER 2000,而且正如@Mitch指出的那样,这仅适用于inm 2005+。 code
若是它能够帮助其余人,这最终对我有用: it
if exists ( select * from sysobjects, syscolumns where sysobjects.id = syscolumns.id and sysobjects.name = 'table' and syscolumns.name = 'column')
我更喜欢INFORMATION_SCHEMA.COLUMNS
而不是系统表,由于Microsoft不保证在版本之间保留系统表。 例如, dbo.syscolumns
在SQL 2008中仍然能够使用,但已过期,之后能够随时删除。 table
尝试这个... object
IF NOT EXISTS( SELECT TOP 1 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE [TABLE_NAME] = 'Employees' AND [COLUMN_NAME] = 'EmployeeID') BEGIN ALTER TABLE [Employees] ADD [EmployeeID] INT NULL END
调整如下内容以适合您的特定要求: select
if not exists (select column_name from INFORMATION_SCHEMA.columns where table_name = 'MyTable' and column_name = 'MyColumn') alter table MyTable add MyColumn int
编辑处理问题 :应该能够-仔细检查代码中的愚蠢错误; 您是否在例如将插入内容应用于同一数据库的状况下查询INFORMATION_SCHEMA? 您的表/列名称中是否有错字? 数据
首先检查dbo.syscolumns
(包含字段定义的内部SQL Server表)中是否存在table
/ column
( id
/ name
)组合,若是不存在,则发出适当的ALTER TABLE
查询来添加它。 例如: 查询
IF NOT EXISTS ( SELECT * FROM syscolumns WHERE id = OBJECT_ID('Client') AND name = 'Name' ) ALTER TABLE Client ADD Name VARCHAR(64) NULL