Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 删除Access中数字后面的空格_Ms Access_Ms Access 2007_Sql Update - Fatal编程技术网

Ms access 删除Access中数字后面的空格

Ms access 删除Access中数字后面的空格,ms-access,ms-access-2007,sql-update,Ms Access,Ms Access 2007,Sql Update,我有一个7位数的列。导入数据时,每个数字后面导入了3个空格。我在更新/选择查询中尝试了几个不同版本的Trim,但没有成功。我正在使用Access 2007 以下是我尝试过的不同方法: 选择查询 Expr1: Trim([Number]) Expr1: RTrim([Number]) 和更新查询 UPDATE Table SET [Number] = Replace([Number], " ", ""); 虽然我不明白为什么这些努力失败了,但我建议你试试这个更新语句 UPDATE [Table

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

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

选择查询

Expr1: Trim([Number])
Expr1: RTrim([Number])
和更新查询

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

虽然我不明白为什么这些努力失败了,但我建议你试试这个更新语句

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]);

有趣的是,ASCII select查询的结果是160。这似乎是一个问题,关于如何删除它有什么想法吗谢谢更新[表格]设置[编号]=替换[编号],Chr160,是的,我的假设不正确。现在编辑。但是,它仍然无法验证数字是否正确格式化,以1.2.3-4开头