SQL查询用下划线替换表中所有出现的空间

时间:2009-12-03 10:55:48

标签: sql ms-access

如何编写SQL查询以使用下划线替换表中所有出现的空格而不为每列编写单独的语句?

3 个答案:

答案 0 :(得分:3)

UPDATE [table_name] SET [field_name] = replace([field_name],'','_'),[field_name2] = replace([field_name2],'','_')

但是,这样你仍然需要总结每一栏,所以上面的答案可能更符合你的需要

答案 1 :(得分:1)

有时你不需要锤子(代码)即使问题看起来像钉子。

如果这是一次性任务且表格不超过几百万行,您只需打开表格,然后从Access中的“编辑”菜单(或ctrl-h)进行查找和替换。

alt text

这是Access的便捷数据处理功能之一,使其对于临时数据库工作非常有用。

<强>注意事项:
 (1)对于大型表格而言,性能不会很好,但适用于中等大小表格中的一次性数据清理任务(或者当您愿意等待几分钟才能完成大型表格时)。  (2)这种技术将产生的锁有点压迫性,因此不建议大量用户主动使用的数据库。

答案 2 :(得分:0)

您可以混合使用VBA和SQL:

Dim rs As DAO.Recordset
Dim db As Database

Set db = CurrentDb

Set rs = db.OpenRecordset("SELECT * FROM TheTable")

For i = 0 To rs.Fields.Count - 1
   ''You may wish to check dbMemo as well as dbText
   If rs.Fields(i).Type = dbText Then
      ''You have to watch out for single quotes as well as spaces
      s = "UPDATE TheTable SET [" & rs.Fields(i).Name & "]  = " _
      & "Replace(Replace([" & rs.Fields(i).Name & "],""''"",""'""),"" "",""_"") " _
      & "WHERE Instr([" & rs.Fields(i).Name & "],"" "")>0 " _
      & "AND [" & rs.Fields(i).Name & "] Is Not Null"
      db.Execute s, dbFailOnError
      Debug.Print db.RecordsAffected
    End If
Next