首页 > 解决方案 > 获取名字和姓氏

问题描述

我在表格中有一个数据作为全名。这些名称包含“姓氏、名字中间名”我需要从全名中获取名字、姓氏和中间名并将它们存储在不同的字段中。

例如,我在表中有全名 -

我需要将它们存储为

FirstName        Last_Name       MName
Robert            Williams         K
Sam               Winchester       T

我在女士访问的一些桌子上做这件事。任何人都可以帮助我如何实现这一目标。

标签: ms-access

解决方案


这是对非 VBA 解决方案的尝试:

select
    iif(t.name like "*,*", trim(mid(t.name, instr(t.name, ",")+1, len(t.name) - instr(t.name, ",") - iif(t.name like "* ?", 2, 0))), iif(t.name like "* ?", left(t.name, len(t.name)-2), t.name)) as FName, 
    iif(t.name like "*,*", left(t.name, instr(t.name, ",")-1), Null) as LName,
    iif(trim(t.name) like "* ?", right(trim(t.name), 1), Null) as MName
from
    YourTable t

更改YourTable以适合您的表名。

假设

  • 没有逗号意味着该名称是名字(可能是中间名)。

  • 假定中间名首字母始终为 1 个字符

例子

给定样本数据:

+--------------------+
|        Name        |
+--------------------+
| Williams, Robert K |
| Winchester, Sam T  |
| Smith, John        |
| Jack A             |
| Harry              |
| ,Thomas T          |
+--------------------+

上面的查询将产生:

+--------+------------+-------+
| FName  |   LName    | MName |
+--------+------------+-------+
| Robert | Williams   | K     |
| Sam    | Winchester | T     |
| John   | Smith      |       |
| Jack   |            | A     |
| Harry  |            |       |
| Thomas |            | T     |
+--------+------------+-------+

推荐阅读