3

我有一列有 7 位数字。导入数据时,每个数字后面都导入了 3 个空格。我在更新/选择查询中尝试了几种不同版本的 Trim() ,但没有成功。我正在使用 Access 2007。

以下是我尝试过的不同方法:

选择查询

Expr1: Trim([Number])
Expr1: RTrim([Number])

和更新查询

UPDATE Table SET [Number] = Replace([Number], " ", "");

http://office.microsoft.com/en-us/access-help/remove-spaces-from-the-beginning-and-end-of-a-text-value-HP001099033.aspx

4

2 回答 2

2

虽然我不明白为什么这些努力失败了,但我建议你试试这个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 '%   ';
于 2012-12-06T18:23:16.307 回答
1

您可以使用正则表达式。这将过滤掉所有非数字。
您必须在 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]);
于 2012-12-06T19:13:49.327 回答