MSSQL未将电话号码与空格匹配

MSSQL未将电话号码与空格匹配,sql,sql-server,sql-server-express,Sql,Sql Server,Sql Server Express,我正在尝试为SQL Express编写一个SQL查询,该查询将从客户端数据库中查找电话号码。我遇到的问题是,数据库中的一些数字中有空格,但我需要匹配的数字没有空格 我的SQL查询当前如下所示: SELECT [FirstName] ,[LastName] ,[CompanyName] FROM [dbo].[People] AS p INNER JOIN [dbo].[Companies] AS l ON p.CompanyId = l.[CompanyId] WHERE

我正在尝试为SQL Express编写一个SQL查询,该查询将从客户端数据库中查找电话号码。我遇到的问题是,数据库中的一些数字中有空格,但我需要匹配的数字没有空格

我的SQL查询当前如下所示:

SELECT [FirstName]
      ,[LastName]
      ,[CompanyName]
FROM [dbo].[People] AS p
INNER JOIN [dbo].[Companies] AS l
ON p.CompanyId = l.[CompanyId]
WHERE p.[Telephone] LIKE '01279800101' OR p.[Mobile] LIKE '01279800101'
其中01279800101是我需要查找公司名称的号码。 当[dbo].[People].[Telephone]为01279 800 101时,此查询与记录不匹配

如何使查询忽略字符串中的空格?

使用

使用

试试这个:

WHERE REPLACE(p.[Telephone], ' ', '') = '0123456789'
它将用空字符串替换[电话]中的所有空格,然后尝试以下操作:

WHERE REPLACE(p.[Telephone], ' ', '') = '0123456789'

在其他人建议修剪然后删除答案之前,

它会将[Telephone]中的所有空格替换为空字符串,我想我是在评论其他人建议修剪然后删除答案,我想我是在评论,只要有可能,不要让查询忽略空格。相反,在将数据存储到数据库之前,请先清理数据。然后,您的查询中没有分散的处理逻辑,您可以为清理后的字段等编制索引。数据库中的数据来自一个已有几年历史的遗留CRM系统。为了便于阅读,用户添加了大约一半的空格,因为所有内容都存储为文本。只要有可能,不要让查询忽略空格。相反,在将数据存储到数据库之前,请先清理数据。然后,您的查询中没有分散的处理逻辑,您可以为清理后的字段等编制索引。数据库中的数据来自一个已有几年历史的遗留CRM系统。为了便于阅读,用户添加了大约一半的空格,因为所有内容都存储为文本。