若是它不存在,我須要添加一個特定的列。 我有相似如下內容,但始終返回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