Другие ответы хороши, особенно если вам приходится жить на чистой земле T-SQL.Однако, как еще один вариант, вы можете решить такие проблемы с помощью небольшого количества магии Regex.Поскольку вы используете SQL 2008, вы можете использовать .NET.Вот некоторый VB-код для создания 2 пользовательских функций CLR, которые вы можете использовать снова и снова:
Option Explicit On
Option Strict On
Option Compare Binary
Option Infer On
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.Text
Imports System.Text.RegularExpressions
Imports Microsoft.SqlServer.Server
Partial Public Class UserDefinedFunctions
<Microsoft.SqlServer.Server.SqlFunction()>
Public Shared Function IsRegexMatch(ByVal input As SqlString, ByVal pattern As SqlString) As SqlBoolean
If input.IsNull OrElse pattern.IsNull Then Return SqlBoolean.Null
Return Regex.IsMatch(input.Value, pattern.Value, RegexOptions.IgnorePatternWhitespace Or RegexOptions.Singleline Or RegexOptions.Multiline)
End Function
<Microsoft.SqlServer.Server.SqlFunction()>
Public Shared Function RegexReplace(ByVal input As SqlString, ByVal pattern As SqlString, ByVal replacement As SqlString) As SqlString
If input.IsNull OrElse pattern.IsNull OrElse replacement.IsNull Then Return SqlString.Null
Return Regex.Replace(input.Value, pattern.Value, replacement.Value, RegexOptions.IgnorePatternWhitespace Or RegexOptions.Singleline Or RegexOptions.Multiline)
End Function
End Class
После добавления этих пользовательских функций в SQL Server вы можете решить свою проблему простым грязным вызовом, подобным этому:
update BusinessUsers
set EmailAddress = dbo.RegexReplace(EmailAddress, '^\.|\.$', '')
Это отличное универсальное решение, помогающее решать всевозможные проблемы с текстовыми манипуляциями, с которыми вы можете столкнуться в будущем.