我有一个 Access 数据库,其中有一列字段包含姓名,其中名字是第一个,姓氏是最后一个。我希望能够将它们互换,以便姓氏在前,名字在后。例如,我希望
鲍勃·史密斯
成为
史密斯,鲍勃
有人知道这是否可以在 Access 中完成吗?
谢谢
答案1
取决于你想怎么做。我会使用函数,而不是编写复杂的 SQL。下面是一个可以做到这一点的函数:
Public Function SwapNames(ByVal varOriginalName As Variant) As Variant
Dim strOriginalName As String
Dim lngLastNameStart As Long
Dim strLastName As String
Dim strFirstName As String
If IsNull(varOriginalName) Or InStr(varOriginalName, " ") = 0 Then
SwapNames = varOriginalName
Else
strOriginalName = varOriginalName
lngLastNameStart = InStrRev(strOriginalName, " ") + 1
strLastName = Mid(strOriginalName, lngLastNameStart)
strFirstName = Left(strOriginalName, lngLastNameStart - 2)
SwapNames = strLastName & ", " & strFirstName
End If
End Function
这将返回以下值:
?SwapNames(Null)
Null
?SwapNames("Fenton")
Fenton
?SwapNames("David Fenton")
Fenton, David
?SwapNames("David W. Fenton")
Fenton, David W.
...您只需要在 SQL 中使用它即可:
UPDATE tblPerson
SET tblPerson.FullName = SwapNames(tblPerson.FullName)
现在,如果您只想使用 SQL 进行操作,那就更复杂、更麻烦了。如果您想要这样做,只需提出要求,我就会试一试。
答案2
您能否创建另一个在 Access 上运行查询并编辑字符串的字段?我对 Access 不太熟悉。我知道您可以在 Excel 中执行此操作。也许这是一个选择。将数据导出到 Excel,使用公式编辑字符串,然后更新 Access 表以包含名字和姓氏的字段。