【问题标题】:Why Like returns empty whereas = returns result?为什么 Like 返回空而 = 返回结果?
【发布时间】:2014-10-29 10:57:03
【问题描述】:

我有一个 table specialization(id, name),其中 name 是一个带有索引的 varchar。当我使用 like 运行查询时,我得到空结果,而如果我在查询中使用 =,它会给我准确的结果。

我的查询如下:

select * from specialization where name like 'Anesthesiology';

这个返回空集

select * from specialization where name = 'Anesthesiology';

这会返回一个结果集。

为什么会这样?

【问题讨论】:

  • 我很确定答案就在这个页面上:dev.mysql.com/doc/refman/5.7/en/case-sensitivity.html。这很复杂,取决于字符串中的排序规则和可能的扩展字符。
  • 你是直接在mysql里试的吗?如果名称正好是'Anesthesiology',它应该可以工作。我刚刚在自己的数据库上尝试过,它可以工作。
  • 是的,它有效。 sqlfiddle.com/#!2/75b875/1
  • @lolka_bolka:是的,刚刚发现在 db 中它被存储为“Anesthesiology”。我的错。感谢您提供线索。

标签: mysql sql-like


【解决方案1】:

我怀疑您的数据库中的 'Anesthesiology' 值中有尾随空格,所以 like 会失败,但奇怪的是,= 会找到它。

【讨论】:

  • 谢谢。事实上是对的。它是 db 中的“麻醉学”。但是为什么 = 会正确找到它呢?
  • = 忽略 mysql 中的空格。由于 mysql 的这些乐趣,我开始使用 postgresql :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多