【问题标题】:Check Column Exist in a Table [duplicate]检查表中存在的列[重复]
【发布时间】:2026-02-07 18:50:01
【问题描述】:

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

【问题讨论】:

    标签: sql ms-access ms-access-2007


    【解决方案1】:

    您可以使用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”。为什么?
    • MS Access 中没有 INFORMATION_SCHEMA。这不是一个有效的答案。 MS SQL Server 中存在 INFORMATION_SCHEMA。
    【解决方案2】:
    if Exists(select * from sys.columns where Name = N'columnName'  
                and Object_ID = Object_ID(N'tableName'))
    
    begin
    
        -- Column Exists
    
    end
    

    "REFERENCE"

    【讨论】:

    • 这仅适用于 SQL Server - 不清楚 OP 正在使用什么数据库...
    【解决方案3】:
    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
    

    【讨论】: