SQL 服务器 - LIKE 运算符在搜索部分字符串而不是整个字符串时有效

SQL Server - LIKE Operator Works When Searching Partial String But Not Whole String

我的 SQL 服务器数据库出现问题,老实说,我什至不确定如何描述。因此,我会尽力证明它。

我有一个 table 包含几行,其中 [Meter Name] 列中的值为

Electric Meter #140002054 Acct.2013147 House, south mall service &&parking lot

现在,当我 运行 以下查询时,我得到了我期望的结果。

select distinct [Meter Name] 
from Last_PM_Export
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service%'

请注意,我使用了 % 通配符,在单词 "service" 之后立即切断了搜索模式。我得到以下结果。

Expected result using partial string

同样,这正是我所期望的。没问题。

现在,观察当我扩展模式以包含紧跟在单词 "service" 之后的 space 时会发生什么。

select distinct [Meter Name] 
from Last_PM_Export
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service %'

Unexpected result using partial string

如您所见,查询returns没有结果。我也试过查询整个字符串,直接从 table.

复制出来
select distinct [Meter Name] 
from Last_PM_Export
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service &&parking lot'

结果与上面的查询相同。没有结果。

我想不出发生这种情况的任何原因。它与我对 LIKE 运算符的工作方式的理解背道而驰。我咨询了我们办公室的 IT 人员,他同意这很不寻常。

同样,我知道这不是对问题的很好描述,但希望演示就足够了。另外,对于无法更全面地共享 table 或数据库,我深表歉意,但出于保密原因,我不能这样做。

如有任何帮助,我们将不胜感激。谢谢。

不是答案,但有很多评论...请确认,这确实是您问题的场景吗?正如您可以轻松查看的那样,SELECT 都返回了正确的行...

DECLARE @mockup TABLE([Meter Name] VARCHAR(1000));
INSERT INTO @mockup VALUES('Electric Meter #140002054 Acct.2013147 House, south mall service &&parking lot')
                         ,('Electric Meter #140002054 Acct.2013147 House, south mall service &&some other')
                         ,('different');

--没有空格

SELECT * FROM @mockup 
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service%';

--带空格

SELECT * FROM @mockup 
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service %';

可能还有更多内容,您为了简洁而减少了?您能否更改上述 模型 以使您的问题可重现?