Ms access 如何使用ColdFusion替换数据库表中所有匹配字符串

Ms access 如何使用ColdFusion替换数据库表中所有匹配字符串,ms-access,coldfusion,Ms Access,Coldfusion,使用MS Access数据库,使用一个特定的表,并分散在整个表中日期列的不同位置(由于数据导入,这些列本身的顺序也可能不同)是文本“未知”。我想替换整个数据表中出现的文本字符串 我能想到的唯一方法是导出到csv格式,然后重新替换,然后再次导入数据,但我想知道是否有一种“更灵活”的方法 这些列包含从csv文件导入的数据,因此所有列都是文本,它们可以包含“日期字符串”、文本、数字(作为字符串)和null的组合 您可以使用Access,运行“编辑替换”命令来执行此操作。如果需要在代码中执行此操作,则可

使用MS Access数据库,使用一个特定的表,并分散在整个表中日期列的不同位置(由于数据导入,这些列本身的顺序也可能不同)是文本“未知”。我想替换整个数据表中出现的文本字符串

我能想到的唯一方法是导出到csv格式,然后重新替换,然后再次导入数据,但我想知道是否有一种“更灵活”的方法


这些列包含从csv文件导入的数据,因此所有列都是文本,它们可以包含“日期字符串”、文本、数字(作为字符串)和null的组合

您可以使用Access,运行“编辑替换”命令来执行此操作。如果需要在代码中执行此操作,则可以打开记录集,循环记录,并针对每个字段运行:

rst.fields(i)=replace(rst.fields(i),"Not known","Something")

这就是它在VBA中的工作方式,相信您可以在coldfusion中执行类似的操作

为什么不在记事本++(或类似工具)中打开CSV文件并执行查找/替换

您可以使用replace,它遵循基本的TSQL实现:

下面是我更新Northwind示例数据库的customers表的一个示例:

update customers set Customers.[Job Title] = replace( Customers.[Job Title], 'Purchasing', 'Manufacturing');
因此,要将其提炼成一个通用示例:

update TABLENAME set FIELD = 
    replace( FIELD, 'STRING_TO_REPLACE', 'STRING_TO_REPLACE_WITH' )

在一条语句中更新整个表。小心点;)

在日期栏中有文本吗?Access允许这样做吗?这是一个从csv文件导入的数据,所以所有列都是文本,所以它们可以混合包含“日期字符串”和文本,并且为空。@Saul-您真的需要替换正则表达式吗?如果没有,大多数数据库都有一个sql replace()函数,即
updatetablename SET col1=replace(…),col2=replace(…)
。(虽然代码应该在插入之前进行验证。然后您可以使用正确的日期列)Replace()函数只能在Access中使用,不能通过ODBC或OLEDB使用。但是,当您可以执行SQL UPDATE批处理命令时,使用记录集逐行执行也是不明智的。我只在Access中工作,所以我会使用带有Replace()函数的SQL更新。从外部访问中,您必须使用Len()和Mid()以及Left()编写嵌套函数,以与Replace()相同。Replace函数在Access中运行良好,但正如David所说,不是通过Coldfusion SQL语句(我认为ODBC)实现的。Replace函数在Access中运行良好,并在SQL设计窗口中运行,但由于不是通过Coldfusion SQL语句,我认为ODBC如果这是一个一次性脚本,那么在access中执行它应该不会有问题。但是,如果是,则循环查询并逐行执行。在我看来,只执行一次清理数据并不是性能问题。以后对数据的更新可以在更新之前清理。