修改访问

时间:2016-10-26 18:50:52

标签: sql regex ms-access

我在MS Access中有2个表, TableA TableB 。表A只有1个字段: myFieldID ,而TableB只有1个字段: myFieldName (实际上我有更多字段,但这些字段对于我的问题)。 两个表都有相同的记录,但以不同但相似的方式编写。 例如,TableA具有:

|TableA.myFieldId |
|-----------------|
|MM0001P          |
|HR0003P          |
|MH0567P          |

所以你可以看到所有的记录都是这样形成的(最后是P): ([A-Z] [A-Z] [0-9] [0-9] [0-9] [0-9] P) 然后,TableB有:

|TableB.myFieldName                          |
|--------------------------------------------|
|MH-0567 Materials Handling important Role   |
|MM-0001 Materials Management Minor Role     |
|HR-0003 Human Resources Super Important Role|

所以这个有格式(最后没有' P'): ([A-Z] [A-Z] - [0-9] [0-9] [0-9] [0-9]([A-Z] | [a-z] *))

首先,我想在这些字段上使用tableA和tableB进行连接查询,但正如您所看到的,每次结果都将为NULL,因为两个字段的记录完全不同。 所以我想更改 TableA.myFieldId 中的每个名称及其在 TableB.myFieldName 中的相应名称 问题是,两个表都有大约100万条记录,并且两个表中的字段重复多次,而且我不知道如何做到这一点(MS Access甚至不让我使用正则表达式)

1 个答案:

答案 0 :(得分:2)

我会创建第二个表中所有唯一条目的表(或查询,如果它经常更改)和第一个表的相应键。然后使用该表或查询来帮助加入这两个表。

这样的东西
Select myFieldName as FName, left(myFieldName,2) & mid(myFieldName,4,4) & "P" as FID
from TableB
group by FName, FID

重要提示 - 在两个文件中都找到了所有ID,或者两个表中的记录是否都在另一个表中?如果它们不一直匹配,您可能需要额外的逻辑或步骤来从tableA和tableB制作主表。