如何将一张表中的字符替换为另一张表的记录

Posted

技术标签:

【中文标题】如何将一张表中的字符替换为另一张表的记录【英文标题】:How to replace the characters in one table to the records of another table 【发布时间】:2013-11-13 04:46:46 【问题描述】:

我在 MSACCESS 中有两个表。

表1

table1ID,txtOld,txtreplace,country

1,ä,AA,德国

2,ä,a,全部

3,Ä,A,挪威

4,Ä,a,全部

5,Ä,A,德国

表2

table2ID、名字、地址、国家

1,RonÄld, mäin street,Germany

2,MÄdonä,公园路,美国

3,Madonä,公园路,挪威

我想根据 table1 上分配的国家/地区字符替换 table2 上名字和地址上的特殊字符。如果国家不匹配或未在 table1 上分配,例如此处未分配 USA,它将替换 table1 中与国家名称“all”匹配的字符。

【问题讨论】:

【参考方案1】:

很遗憾,我们无法在单个 Access SQL 查询中执行此操作,因此我们使用 VBA:

Sub ReplaceAccentsInTable2()
'
  Dim rst As dao.Recordset
  Dim rst1 As dao.Recordset
'
  Set rst = CurrentDb.OpenRecordset("table2")
'
' replace first by country specific alphabet:
'
  Do While (Not rst.EOF)
    '
    Set rst1 = CurrentDb.OpenRecordset("SELECT txtOld, txtreplace" _
      & " FROM table1 WHERE (country='" & rst!Country & "');")
    '
    rst.Edit
    '
    While (Not rst1.EOF)
      rst!Firstname = Replace(rst!Firstname, rst1!txtOld, rst1!txtreplace, , , vbBinaryCompare)
      rst!Address = Replace(rst!Address, rst1!txtOld, rst1!txtreplace, , , vbBinaryCompare)
      rst1.MoveNext
    Wend
    '
    rst.Update
    rst.MoveNext
    '
  Loop
'
' replace then "all" alphabet: this is useful for Norway, as â is not set in table1:
'
  Set rst1 = CurrentDb.OpenRecordset("SELECT txtOld, txtreplace" _
    & " FROM table1 WHERE (country='all');")
'
  rst.MoveFirst
'
  Do While (Not rst.EOF)
    '
    rst.Edit
    rst1.MoveFirst
    '
    While (Not rst1.EOF)
      rst!Firstname = Replace(rst!Firstname, rst1!txtOld, rst1!txtreplace, , , vbBinaryCompare)
      rst!Address = Replace(rst!Address, rst1!txtOld, rst1!txtreplace, , , vbBinaryCompare)
      rst1.MoveNext
    Wend
    '
    rst.Update
    rst.MoveNext
    '
  Loop

'
' close ADO objects:
'
  rst1.Close
  Set rst1 = Nothing
'
  rst.Close
  Set rst = Nothing
'
End Sub

这里的结果表2:

【讨论】:

以上是关于如何将一张表中的字符替换为另一张表的记录的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中,如何将一张表的内容复制到同一个数据库中的另一张表中?

在 MySQL 中,如何将一张表的内容复制到同一个数据库中的另一张表中?

在 MySQL 中,如何将一张表的内容复制到同一个数据库中的另一张表中?

sql server里如何将一组用逗号分隔的字符串分解并插入到另一张表中,比如:11873,27827, 也可能是好多

vf中如何实现用一个表中的字段值替换修改另一张表中的字段值

oracle 将一张表的数据插入到另一张表