如何将全名字段拆分为名字,姓氏和中间名?

ned*_*179 3 ms-access vba access-vba

我有一个表格,其中一个字段PATRN NAME被设置为First_Name, Last_Name M.I.

例子:

史密斯,詹姆斯M.

琼斯,克里斯J.

安德森,温迪L.

如何将此字段拆分为3个名为FIRST_NAME,LAST_NAME和MI的字段?我尝试运行查询LAST_NAME: [PATRN NAME]" & ", "以获取姓氏但它没有得到任何结果.我没有设计这个表,所以我意识到在没有单独的字段名称的情况下创建一个完整的字段名称并不聪明; 我只是负责修理它.

Han*_*sUp 6

考虑是否可以根据自己的意愿弯曲分割功能.

这是立即窗口会话的示例.

PATRN_NAME = "Smith, James M"
? PATRN_NAME
Smith, James M
? Split(PATRN_NAME, ",")(0)
Smith
? Trim(Split(PATRN_NAME, ",")(1))
James M
? Split(Trim(Split(PATRN_NAME, ",")(1)), " ")(0)
James
? Split(Trim(Split(PATRN_NAME, ",")(1)), " ")(1)
M
Run Code Online (Sandbox Code Playgroud)

您不能Split()直接在查询中使用.但是,您可以构建一个或多个用户定义的函数,并从查询中调用UDF.

这种方法可以使超过一个简单的查询需要的其他功能的组合:InStr(),Mid(),Right()等.然而,一个UDF意味着查询只能从Access应用程序会话中工作; 如果您需要从Access外部运行的查询(.Net,VBScript,PHP等),则UDF将不可用.

我建议您澄清一下,您是否要提取FIRST_NAME,LAST_NAME以及MI每次查询数据时,或者在提取一次之后是否将这些值分别存储在表中.这应该影响你选择的方法.如果您将它们拆分一次并存储,则可以使用VBA过程而不是查询.

还要确定在中间首字母后面的可选点会发生什么,"Jones,Chris J." .保留MI或丢弃它?