删除字符串中最后一个空格后的最后一个字符

时间:2014-09-22 13:12:54

标签: ms-access ms-access-2007 ms-access-2010

我有如下所述的字符串值。

字符串值:

  

George,Matt J

     

Rambla,Tony G。

预期输出:

  乔治,马特

     兰布拉,托尼

我需要修剪上面提到的字母。任何人都可以帮我这个吗?

我通过以下查询

在SQL Server中实现了相同的功能
declare @String as varchar(20) = 'Rambla, Tony G.'

select left(@string,len(@string)+1-charindex(' ',reverse(@string))) 

如何在MS Access中实现此目的?

我尝试了这些并且没有帮助

第一种方法

Left([ColumnName], Len([ColumnName]) -1)

第二种方法

SELECT LEFT(ColumnName, INSTRREV(ColumnName, " "))

3 个答案:

答案 0 :(得分:3)

从您的评论中可以清楚地看出,您面临的问题是检测最后是否需要删除多少个字符。如果在没有测试的情况下删除字符,如果实际存在缩写的中间名,那么SQL-Server和Access-SQL解决方案都不会起作用!更糟糕的是,如果Column为null或不包含任何空格字符,那么您甚至可能会遇到异常。

我建议创建一个VBA函数并从Access查询中调用它,因为逻辑变得有点复杂。

Public Function RemoveMiddleName(ByVal name As Variant) As Variant
    RemoveMiddleName = name
    If Not IsNull(name) Then
        Dim s As String, pos As Long, l As Long
        s = CStr(name)
        pos = InStrRev(s, " ")
        l = Len(s)
        If pos > 1 And l - pos <= 2 Then '1 or 2 characters at the end
            If l - pos = 1 Or (l - pos = 2 And Right$(s, 1) = ".") Then
                RemoveMiddleName = Left(s, pos - 1)
            End If
        End If
    End If
End Function

将此代码放在VBA模块中(不在表单或报表中)。

然后像这样称呼它:

SELECT RemoveMiddleName([ColumnName]) As FirstLast FROM MyTable

答案 1 :(得分:0)

Trim(Left([columnname] & "  ",InStr(1+InStr([columnname] & "  "," "),[columnname] & "  "," ")))

注意每个&amp;之后的双倍空格。 - 这确保搜索字段中始终至少有2个空格。

答案 2 :(得分:0)

尝试此操作以删除字符串中最后一个空格字符后的所有内容

DECLARE @string AS VARCHAR(100)='First Second Third'

select LEFT(@string, LEN(@string) - CHARINDEX(' ', REVERSE(@string)))

这会给你:

First Second