2014-10-29 86 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