SQL - 喜欢和通配符,不是预期的结果

SQL - Like and wildcard, not expected result

我还是SQL的新手所以请耐心等待我。

我在查询中得到了以下 WHERE 语句:

WHERE Scopes.Name = 'APAC' AND Sites.City LIKE '%o%'

它产生了以下结果(如预期的那样):

而如果我删除结尾的通配符,就像这样:

WHERE Scopes.Name = 'APAC' AND Sites.City LIKE '%o'

结果为空 table。 我无法理解的是,城市名称 "Repetto" 显然以 "o" 结尾,因此查询中的 LIKE '%o' 应该产生与 LIKE '%o%' 相同的结果。

我对通配符的使用有误解吗? 谁能给我解释一下背后的逻辑?

通配符的使用是正确的。意思是'Repetto'.

中的o后面有一个字符

这可能是隐藏角色或 space。一种可能是该列声明为 char() 而不是 varchar(),因此该值用 spaces 填充。

"Repetto " 可能有一个结束字符 "space"。

WHERE Scopes.Name = 'APAC' AND TRIM(Sites.City) LIKE '%o'

如果是这种情况,以 space 结尾的 "Repetto" 不匹配“%o”通配符表达式,但“%o%”匹配。