MS Access,从字段中修剪尾随空格

问题描述

在我的访问文件中的表中,每个单词后都有带有尾随空格的字符串。数据类型为短文本。 即StackOverFlow

访问设计视图中的某些功能是否可以消除尾随空格? 还是我必须到 sql 查询级别来修剪尾随空格?

如果是 sql,我可以在查询添加什么以将 StackOverFlow 修剪为 StackOverFlow

解决方法

使用RTrim

Select RTrim([YourField]) As CleanText From YourTable
,

尝试使用 InStr 查找字符串末尾/第一个空格的位置,然后将所有内容放在左侧。

SELECT Left("StackOverFlow           ",InStr("StackOverFlow           "," ") - 1);
,

作为一般规则,从表单或编辑中输入的数据会自动修剪尾随空白。但是,如果您导入数据,则是的,可能会出现尾随空白。

因此,您需要清除现有的空白,但在此之后,不应出现尾随空白。

您可以在标准代码模块中使用此例程来清理给定的表。

Sub CleanTable(strTableName As String)

     Dim rst        As DAO.Recordset
     Dim MyField    As DAO.Field
     
     Set rst = CurrentDb.OpenRecordset(strTableName)
     
     Debug.Print "clean table = " & strTableName
     Do While rst.EOF = False
     
        rst.Edit
        For Each MyField In rst.Fields
        
           If MyField.Type = dbMemo Or MyField.Type = dbText Then
              rst(MyField.Name) = Trim(rst(MyField.Name))
           End If
        Next MyField
        
      rst.Update
      rst.MoveNext
     Loop
     
     rst.Close
     
     Beep
     Debug.Print "done clean table"
     
End Sub

所以从代码,甚至调试(立即)窗口,你可以去:

CleanTable"tblHotels"

但是,一旦完成,正如所指出的,尾随空白不应再次出现。如果它们是有关从 Excel、csv 或 dbase 或某些其他数据源导入的其他详细信息,则必须在起作用​​,并且在此处涉及您未共享的详细信息。

当然,在运行以上类型的代码之前进行备份。