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

Posted

技术标签:

【中文标题】如何检查 SQL Server 中是不是存在列?【英文标题】:How do I check if a column exists in SQL Server?如何检查 SQL Server 中是否存在列? 【发布时间】:2010-09-18 22:55:40 【问题描述】:

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

【问题讨论】:

How to check if column exists in SQL Server table 的可能重复项 【参考方案1】:
IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME='tablename' AND COLUMN_NAME='columname' )

【讨论】:

【参考方案2】:
If col_length('table_name','column_name') is null
    select 0 as Present
ELSE
    select 1 as Present

Present 为 0,table_name 中是否没有 column_name,否则为 1

@CMS:我认为“INFORMATION_SCHEMA.COLUMNS”没有关于数据库中每个表的信息。因为这对我不起作用。但我的回答确实奏效了。

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

这应该很好:

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

【讨论】:

【参考方案5】:

我不知道这个脚本是否可以在 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')

【讨论】:

以上是关于如何检查 SQL Server 中是不是存在列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在SQL Server2005数据库中检查一个表是不是存在,如存在就删除表记录,如不存在就建表.

SQL Server:检查表列是不是存在并删除行

如何检查Sql server中是不是存在约束?

如何检查 SQL Server 2005 中是不是存在非聚集索引

检查可空列是不是稀疏或不在 SQL Server 中查询

如何检查 SQL Server CE 3.5 中是不是存在表