In MS Access I've tried to use:
UPDATE Table SET FieldName= REPLACE(FieldName, '\s+', '\s');
to remove multiple spaces from a field, but it doesn't work.
In MS Access I've tried to use:
UPDATE Table SET FieldName= REPLACE(FieldName, '\s+', '\s');
to remove multiple spaces from a field, but it doesn't work.
As mentioned in the comments to the question, the Replace()
function does not support regular expressions. However, you could accomplish your goal with the following VBA code:
Option Compare Database
Option Explicit
Sub RemoveMultipleSpaces()
Dim cdb As DAO.Database
Set cdb = CurrentDb
Do While DCount("FieldName", "TableName", "FieldName LIKE ""* *""") > 0
cdb.Execute "UPDATE TableName SET FieldName = Replace(FieldName,"" "","" "")"
Loop
Set cdb = Nothing
End Sub
edit re: comment
Alternatively, you could use the following code which uses regular expressions to find the replacement candidates:
Option Compare Database
Option Explicit
Public Function RegexReplace( _
originalText As Variant, _
regexPattern As String, _
replaceText As String, _
Optional GlobalReplace As Boolean = True) As Variant
Dim rtn As Variant
Dim objRegExp As Object ' RegExp
rtn = originalText
If Not IsNull(rtn) Then
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = regexPattern
objRegExp.Global = GlobalReplace
rtn = objRegExp.Replace(originalText, replaceText)
Set objRegExp = Nothing
End If
RegexReplace = rtn
End Function
Usage example:
RegexReplace("This is a test.","\s+"," ")
returns
This is a test.
You would use it in a query like this:
UPDATE TableName SET FieldName = RegexReplace(FieldName,'\s+',' ')
This function remove multiple spaces and also tabs, new line symbols etc.
Public Function removeObsoleteWhiteSpace(FromString As Variant) As Variant
If IsNull(FromString) Then 'handle Null values
removeObsoleteWhiteSpace = Null
Exit Function
End If
Dim strTemp As String
strTemp = Replace(FromString, vbCr, " ")
strTemp = Replace(strTemp, vbLf, " ")
strTemp = Replace(strTemp, vbTab, " ")
strTemp = Replace(strTemp, vbVerticalTab, " ")
strTemp = Replace(strTemp, vbBack, " ")
strTemp = Replace(strTemp, vbNullChar, " ")
While InStr(strTemp, " ") > 0
strTemp = Replace(strTemp, " ", " ")
Wend
strTemp = Trim(strTemp)
removeObsoleteWhiteSpace = strTemp
End Function