检查表中是否存在某列

4

如何使用SQL查询检查表中是否存在某个列?我正在使用Access 2007。

3个回答

3
您可以使用 Information_schema 视图来实现:
If Not Exists (Select Column_Name
               From INFORMATION_SCHEMA.COLUMNS
               Where Table_Name = 'YourTable'
               And Column_Name = 'YourColumn')
begin

-- Column doesn't exist

end

此外,您可能希望通过包括数据库和/或模式来进一步限制where子句。
If Not Exists (Select Column_Name
               From INFORMATION_SCHEMA.COLUMNS
               Where Table_Name = 'YourTable'
               And Column_Name = 'YourColumn'
               And Table_Catalog = 'YourDatabaseName'
               And Table_Schema = 'YourSchemaName')

begin

-- Column doesn't exist

end

我收到了错误信息:“SQL指令无效。需要DELETE、INSERT、PROCEDURE、SELECT或UPDATE。” 为什么? - Piero Alberto
MS Access 中没有 INFORMATION_SCHEMA。这不是一个有效的答案。INFORMATION_SCHEMA 存在于 MS SQL Server 中。 - Aris

2
if Exists(select * from sys.columns where Name = N'columnName'  
            and Object_ID = Object_ID(N'tableName'))

begin

    -- Column Exists

end

"参考资料"


这仅适用于SQL Server - 不清楚OP正在使用哪个数据库... - marc_s

2
IF NOT EXISTS (SELECT 1
FROM syscolumns sc
JOIN sysobjects so
ON sc.id = so.id
WHERE so.Name = 'TableName'
AND sc.Name = 'ColumnName')
BEGIN
--- do your stuff
END

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接