我有如下所述的字符串值。
字符串值:
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, " "))
答案 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