在MS Access中使用SQL重命名列



在MS Access中,我有几个表,其中一些列名在其列名中有空格(例如Transaction I)。

我需要使用SQL用下划线(例如Transaction_ID)替换空格。

虽然我对SQL有点熟悉,但是,我的暴露是在Oracle环境中,所有这些查询和功能都不能在MS Access中工作。我对MS Access相当陌生。

我试着从我搜索的帖子中遵循代码,但是,无济于事。

alter table EP sp_rename 'Transaction ID' to Transaction_ID
alter table EP rename column 'Transaction ID' to Transaction_ID

Access没有内置命令行"选项来重命名列。

(你的例子看起来是SQL Server,和更多,所以它看起来是使用一个库存储过程函数来为你做这件事。所以,这看起来是SQL Server语法-而不是MS Access。

如果要在Access中使用DDL来重命名列?您必须使用所需的名称创建一个新列,然后将数据移动到这个新列,然后删除旧列。

Access中所谓的sql 'ddl'命令实际上非常遵循sql标准。

所以,在开始这条路之前,我会考虑使用内置的GUI +表设计器。(它会为你做幕后的苦差事)。

那么,您可以使用DDL来重命名列吗?可以,但是你必须分三步完成。

创建新列

从旧列复制数据到新列

删除旧列

由于索引,可能的关系和其他问题,那么人们真的想使用内置的表设计器+ GUI。

但是,您可以使用Access中的过程(VBA)来完成此操作:

假设我们有一个非常糟糕的城市列名叫做[城市]。

要重命名为City,那么我们可以执行:

Sub MyAlter()
' create the new column
CurrentDb.Execute "ALTER TABLE tblHotels ADD COLUMN City TEXT(50)", dbFailOnError
' copy the data
CurrentDb.Execute "UPDATE tblHotels SET City = [The City]", dbFailOnError
' drop the origonal column
CurrentDb.Execute "ALTER TABLE tblHotels DROP COLUMN [The City]", dbFailOnError
End Sub

请记住,Access中任何带空格的列都需要用[]包围。这适用于SQL的选择查询、更新查询、插入查询,当然还有修改表结构的DDL命令。

如果是一次性交易,那么当然只需使用access,在设计模式下打开所讨论的表,然后进行更改。

但是,如果由于某种原因确实需要使用过程,则可以使用访问码模块中的上述代码。

或者您可以直接启动查询构建器,切换到SQL视图模式,并以这种方式键入上述原始SQL。

(你必须分别输入每个sql命令- Access查询生成器一次只允许一个sql语句)

所以你可以先在SQL上面输入,然后点击"!",然后执行另外两条SQL语句。

做备份!!

当然,使用旧列名的任何代码、任何查询、任何报告等都会中断。因此,在现有的应用程序中更改列名是一项高风险的冒险(您可能会破坏大量的代码、现有的表单、现有的报表和现有的SQL查询)。

但是,如果这是一次更新?然后我当然会使用表设计器。它允许在不删除列的情况下重命名,并保留其他字段设置,如索引、格式等。

以上建议的方法哪种更有意义将取决于您的特定用途。例子。

最后但并非最不重要的?您可以使用VBA代码和其中的表对象。这种方法可能是最好的。它不使用SQL DDL,并且您可以更好地控制给定列的许多特性(必需的,允许null -这个列表继续)。大多数设置都可以在DDL中设置,但是你需要花费相当多的时间来搜索和查找这些设置。

All in All ?如果可能的话,我会在这里使用表设计器。

最新更新