【发布时间】:2018-01-27 12:07:16
【问题描述】:
我的 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
同样,这正是我所期望的。没问题。
现在,观察当我扩展模式以包含紧跟在“服务”一词之后的空格时会发生什么。
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 人员,他同意这是不寻常的。
再次,我知道这不是对问题的很好描述,但希望演示就足够了。此外,对于无法更充分地共享表或数据库,我深表歉意,但出于保密原因,我不能这样做。
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
也许“服务”后面的那个空格不是空格。
-
获取一个十六进制编辑器来检查空格和两个 & 是什么。有可能所有三个都是控制字符。当数据操作员将地址复制并粘贴到我们的数据库中时,我经常会遇到这种情况。
-
您可以查看页面上的数据并检查它实际上是在“服务”之后的“”
-
您是否复制'n'paste上面的文本(直接从结果视图中取出到此消息中)?
-
我无法复制它...该列的数据类型是什么(
varchar、nvarchar、其他)?有没有奇怪的排序?我记得有一个愚蠢的问题,双 A 表示斯堪的纳维亚语言中的不同字母......
标签: sql sql-server string sql-like