2014-10-29 88 views
1

我有一个表专业化(ID,名称)其中名称是一个varchar与索引。当我运行查询使用像我得到空结果,而如果我在查询中使用=它会给我确切的结果。为什么喜欢返回空而反过来返回结果?

我的查询如下:

select * from specialization where name like 'Anesthesiology'; 

这回空集

select * from specialization where name = 'Anesthesiology'; 

这将返回一个结果集。

这是怎么发生的?

+2

我敢肯定答案在这个页面上:http://dev.mysql.com/doc/refman/5.7/en/case-sensitivity.html。这很复杂,取决于字符串中的排序规则和可能的扩展字符。 – 2014-10-29 11:01:29

+1

你是否直接在mysql中试用它?它应该有效,如果名字恰好是“麻醉学”。我刚刚在我自己的数据库上试过,并且它可以工作。 – vaso123 2014-10-29 11:09:41

+1

是的,它的工作原理。 http://sqlfiddle.com/#!2/75b875/1 – vaso123 2014-10-29 11:11:28

回答

2

我怀疑在你的数据库中有'麻醉'价值的尾随空格,所以会失败,但很奇怪,=会找到它。

+0

谢谢。事实是对的。这是'麻醉学'分贝。但为什么=找到正确的? – srahul07 2014-10-29 11:19:45

+1

=忽略mysql中的空白。由于mysql的这些乐趣,我开始使用postgresql了:) – Kell 2014-10-30 16:21:06