SQL Server - LIKE运算符在搜索部分字符串但不是整个字符串时工作

时间:2017-08-18 18:21:17

标签: sql sql-server string sql-like

我遇到了我的SQL Server数据库的问题,说实话,我不确定如何描述。因此,我会尽力证明这一点。

我有一个包含多行的表格,[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%'

请注意,我使用的是%通配符,在“服务”一词后面立即切断搜索模式。我得到以下结果。

Expected result using partial string

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

现在,观察当我扩展模式以包含紧跟在“service”之后的空间时会发生什么。

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

如您所见,查询不返回任何结果。我也试过查询整个字符串,就像直接从表中复制一样。

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人员,他同意这是不寻常的。

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

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

不是答案,而是评论很多......请您确认,这是您问题的确切情况吗?您可以轻松查看,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 %';

可能会有更多的东西,你为简洁而减少了吗?您是否可以更改上述模拟以使您的问题可以重现?