如何检查SQL Server中是否存在列?

问题描述:

如何检查SQL Server 2000中是否存在列?如何检查SQL Server中是否存在列?

+2

可能重复[如何检查是否列存在于SQL Server表中](http://stackoverflow.com/questions/133031/how-to-check-if-column-exists-in-sql-server-table) – 2011-12-11 19:16:44

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='tablename' AND COLUMN_NAME='columname') 
+1

仅供参考:这也适用于SQL Server 2005 – Russell 2009-10-28 04:57:25

在查询分析器中,选择包含您需要检查字段是否存在的表的数据库,并运行下面的查询。

SELECT count(*) AS [Column Exists] 
FROM SYSOBJECTS 
INNER JOIN SYSCOLUMNS ON SYSOBJECTS.ID = SYSCOLUMNS.ID 
WHERE 
SYSOBJECTS.NAME = 'myTable' 
AND SYSCOLUMNS.NAME = 'Myfield' 

If col_length('table_name','column_name') is null 
    select 0 as Present 
ELSE 
    select 1 as Present 

目前为0,是没有列名出现在表名,另有1

@CMS:我不认为“INFORMATION_SCHEMA.COLUMNS”有大约在每一个表中的信息D B。因为这不适合我。但我的回答确实奏效了。

这应该很好地做到:

if COLUMNPROPERTY(object_id('table_name'), 'column_name', 'ColumnId') is null 
    print 'doesn\'t exist' 
else 
    print 'exists' 

我不知道该脚本将在SQLServer 2000的工作,但在2008年的作品:的

SELECT COLUMNS.* 
FROM INFORMATION_SCHEMA.COLUMNS COLUMNS, INFORMATION_SCHEMA.TABLES TABLES 
WHERE COLUMNS.TABLE_NAME=TABLES.TABLE_NAME AND UPPER(COLUMNS.COLUMN_NAME)=UPPER('column_name')