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%”匹配。
我还是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%”匹配。