如何有效地使用SQLReplace函数?

如何有效地使用SQLReplace函数?,sql,tsql,ms-access,Sql,Tsql,Ms Access,我试图替换Access数据库中的多行,以遵循一组新的数据规则。例如,迈尔斯堡中的Fort一词被列为Ft.,Ft和Fort。我想对这个团体做一个全球性的改变。我熟悉sqlreplace命令,但不知道是否有人对存储过程做过类似的操作,或者有过类似的经验 比外行听起来更难 除了为你不喜欢的每件事做一个替换,换成你喜欢的东西之外,没有别的办法。但是要非常小心。。。意料之外的后果等等。我建议在每次更新之前进行一次选择,以查看您将要更新的内容 因此,以迈尔斯堡为例,您必须进行3项替换: Replace("F

我试图替换Access数据库中的多行,以遵循一组新的数据规则。例如,迈尔斯堡中的Fort一词被列为Ft.,Ft和Fort。我想对这个团体做一个全球性的改变。我熟悉sqlreplace命令,但不知道是否有人对存储过程做过类似的操作,或者有过类似的经验

比外行听起来更难

除了为你不喜欢的每件事做一个替换,换成你喜欢的东西之外,没有别的办法。但是要非常小心。。。意料之外的后果等等。我建议在每次更新之前进行一次选择,以查看您将要更新的内容

因此,以迈尔斯堡为例,您必须进行3项替换:

Replace("Ft. Myers", "Fort Myers")
Replace("Ft Myers", "Fort Myers")
Replace("Fort. Myers", "Fort Myers")

如果你有很多数据和很多事情要改变,这可能是一个巨大的任务。但是没有“自动化”的方法可以做到这一点——SQL不使用模糊逻辑,您必须准确地指定您希望它做的一切。

整理地址可能是一场噩梦。您可能需要创建替换表:

ShouldBe    Current
Fort Myers  Ft Myers
Foot Hill   Ft Hills

在大多数情况下,ShouldBe列可以填充更新查询,但您也可以在更新主表之前查看结果。这也将有利于未来的数据输入。

您必须非常非常小心,不要更换超出预期的内容

先做备份,以防出现严重错误。

始终从选择开始,以首先筛选记录。仔细检查结果

SELECT * FROM Table WHERE City LIKE "%Ft. Myers%" 

然后按照卡尔顿所说的进行替换。

如果您的目标是标准化类似~Fort Myers的城市名称,您应该能够做到以下几点:

UPDATE Table SET City = 'Fort Myers' WHERE City LIKE 'F%Myers';

这将替换任何行中的任何城市字段,其中城市以F开头,以Myers结尾。这可能是你想要的,但要非常小心。

是的。。。您不想犯clbuttic错误。Replace不是SQL函数。如果您是在Access本身中执行SQL,那么您可以在SQL中使用VBA Replace()函数,因为Access表达式服务允许在SQL中使用VBA预定义和用户定义的函数。@David W.Fenton:您再次看不到Access和Jet/ACE之间的区别。REPLACE()确实可以在Access UI之外的ACE/Jet SQL中使用。如果海报使用的是MS SQL Server,则替换也是T-SQL(和SQL-92)中的一个关键字。不确定“T-SQL”标记是否相关,但如果海报使用的是Jet/ACE(通俗地说是“MS Access”),IMO最好使用相似的关键字来代替相似的关键字,否则,引擎需要处于ANSI-92查询模式或“%”通配符才能正常工作。不确定“t-sql”标记是否相关,但如果它们使用的是Jet/ACE(通俗地说是“MS Access”),IMO最好使用LIKE关键字代替LIKE,否则,引擎需要处于ANSI-92查询模式或“%”通配符才能正常工作。