【发布时间】:2010-09-13 01:54:26
【问题描述】:
如果特定列不存在,我需要添加它。我有类似以下的内容,但它总是返回 false:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
如何检查 SQL Server 数据库的表中是否存在列?
【问题讨论】:
-
我实际上并不认为问题中的代码有任何问题:在 2008 R2 中对我来说效果很好。 (也许您在错误的数据库中运行它?也许您的数据库区分大小写,而您的 myTableName / myColumnName 字符串中的大小写不正确?这种类型的查询似乎比 COL_LENGTH 解决方案更灵活:我可以通过适当地为“INFORMATION_SCHEMA”添加前缀来针对不同的数据库甚至通过数据库链接运行它。无法使用 COL_LENGTH 元数据函数来执行此操作。
-
@mwardm -
COL_LENGTH('AdventureWorks2012.HumanResources.Department ','ModifiedDate')工作正常。 -
相关小提示:如果您想在添加列后立即更新列(我相信很多用户都为此目的搜索此文章),您可以使用
EXEC sp_executesql和形成的UPDATE语句。 -
真正的答案是你应该添加你正在检查的数据库,所以它是
FROM [YourDatabase].INFORMATION_SCHEMA.COLUMNS -
你也可以很简单的使用syscolumns和sysobjects。
标签: sql-server sql-server-2008 tsql sql-server-2012 sql-server-2016