【问题标题】:How to replace all occurrences of matching string in a database table using ColdFusion如何使用 ColdFusion 替换数据库表中所有匹配字符串的出现
【发布时间】:2011-07-05 11:26:33
【问题描述】:

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

我能想到的唯一方法是导出为 csv 格式,然后执行 REReplace 然后再次导入数据,但我想知道是否有“更流畅”的方式?

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

【问题讨论】:

  • 您在日期列中有文本吗? Access 允许这样做吗?
  • 它是从 csv 文件导入的数据,因此所有列都是文本,因此它们可以包含“日期字符串”和文本以及 null 的混合。
  • @Saul - 你真的需要一个正则表达式替换吗?如果没有,大多数数据库都有一个 sql replace() 函数,即UPDATE tableName SET col1 = replace(...), col2 = replace(...)。 (虽然代码应该真正验证 before 插入。然后你可以使用正确的日期列)

标签: ms-access coldfusion


【解决方案1】:

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

http://msdn.microsoft.com/en-us/library/ms186862.aspx

这是我更新罗斯文示例数据库的客户表的示例:

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 中运行良好并在 SQL 设计窗口中运行,但不是通过我认为是 ODBC 的 Coldfusion SQL 语句
  • 如果这是一个一次性脚本,在访问中执行它应该不是问题。但是,如果是,请循环查询并逐行执行。执行一次以清除数据并不是 imo 的性能问题。可以在更新之前清除对数据的未来更新。
【解决方案2】:

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

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

这就是它在 VBA 中的工作方式,相信您可以在冷融合中做类似的事情

【讨论】:

  • Replace() 函数只能在 Access 中使用,不能通过 ODBC 或 OLEDB 使用。但是,当您可以执行 SQL UPDATE 批处理命令时,使用记录集逐行执行此操作也不是很明智。
  • 除了 Access 之外我不工作,所以我会使用带有 Replace() 函数的 SQL UPDATE。在 Access 外部,您必须使用 Len() 和 Mid() 和 Left() 编写嵌套函数,以执行与 Replace() 相同的操作。
  • 替换功能在 Access 中运行良好,但正如大卫所说,不是通过我认为是 ODBC 的 Coldfusion SQL 语句
【解决方案3】:

为什么不直接在 Notepad++(或类似软件)中打开 CSV 文件并进行查找/替换?

【讨论】:

    猜你喜欢
    • 2016-04-01
    • 2020-06-23
    • 2015-05-30
    • 2022-11-21
    • 2011-02-23
    • 2016-09-26
    • 2012-06-14
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多