我有一列有 7 位数字。导入数据时,每个数字后面都导入了 3 个空格。我在更新/选择查询中尝试了几种不同版本的 Trim() ,但没有成功。我正在使用 Access 2007。
以下是我尝试过的不同方法:
选择查询
Expr1: Trim([Number])
Expr1: RTrim([Number])
和更新查询
UPDATE Table SET [Number] = Replace([Number], " ", "");
我有一列有 7 位数字。导入数据时,每个数字后面都导入了 3 个空格。我在更新/选择查询中尝试了几种不同版本的 Trim() ,但没有成功。我正在使用 Access 2007。
以下是我尝试过的不同方法:
选择查询
Expr1: Trim([Number])
Expr1: RTrim([Number])
和更新查询
UPDATE Table SET [Number] = Replace([Number], " ", "");
虽然我不明白为什么这些努力失败了,但我建议你试试这个UPDATE
说法。
UPDATE [Table] SET [Number] = RTrim([Number])
如果这不删除尾随空格,当您尝试它时会发生什么?有错误信息吗?您是否可能已经SetWarnings
关闭了可以抑制错误消息的功能?
还要检查这些字段值是否包含不可见且可能干扰修剪空格的字符。例如,您可以检查每个字段中最后一个字符的 ASCII 值,如下所示:
SELECT Asc(Right([Number], 1)) AS ascii_value
FROM [Table];
空格字符是 ASCII 32。
最后,如果这些建议不能引导您找到解决方案,请检查以确认该字段包含您期望的内容。
SELECT [Number]
FROM [Table]
WHERE [Number] ALike '% ';
您可以使用正则表达式。这将过滤掉所有非数字。
您必须在 VBA 中创建一个从您的查询中调用的函数。所以,试试这个:
Function NumOnly(S As String) As String
Dim regex As New RegExp
regex.Pattern = "[^0-9.-]"
regex.IgnoreCase = True
regex.Global = True
NumOnly = regex.Replace(S, "")
End Function
并这样使用它:
UPDATE Table SET [Number] = NumOnly([Number]);