2012-12-22 17 views
51

可能重複:
Mysql Like Case Sensitive你如何強制MySQL LIKE區分大小寫?

Mysql的情況下,忽略其LIKE比較。

如何強制它執行區分大小寫LIKE比較?

+1

我不會downvote或關閉票,因爲我不能實際上找到了值得這些選票的東西。不過我同意安迪的觀點,可以通過一些網絡搜索更快地找到答案。我會稱之爲「懶惰」,但61.3k代表並不會說懶惰。或許是溢出來的吧! –

+0

@JamesWebster好的,大概時間到了。我試圖得到「回答你自己的問題」的帽子。跛腳,並且是SO-holic。如果它在幾分鐘內沒有投票,我會關閉它:)即使如此,我還是認爲這個問題有價值 – Bohemian

+0

@AndyRay五年後,使用谷歌提出了這個答案第一:) – Kip

回答

84

使用LIKE BINARY

mysql> SELECT 'abc' LIKE 'ABC'; 
    -> 1 
mysql> SELECT 'abc' LIKE BINARY 'ABC'; 
    -> 0 
+3

這是一個更好的方式 – Weltkind

+0

@Weltkind爲什麼它更好? (不是說我同意或不同意,只是好奇你爲什麼這麼說) – Kip

+0

@Kip這是更好的恕我直言,因爲它不預設任何字符集和任何排序規則。它只是做一個每個人都明白的簡單的「精確匹配」。它也更容易記住(只記得一個關鍵字:'BINARY')和更簡單的代碼(你不必記住像'utf8_bin'這樣的有效字符集名稱) – Bohemian

26

另一種方法是使用COLLATE

SELECT * 
FROM table1 
WHERE columnName like 'a%' COLLATE utf8_bin; 
+1

很好。這爲使用自定義歸類進行自定義匹配提供了機會(儘管完全不可移植,如果需要,仍然需要它, – Bohemian

+2

不起作用。結果不區分大小寫 – Nick

+0

@Nick它正在爲我工​​作。提示LIKE'%ElasticSearch%'COLLATE utf8_bin'返回'ElasticSearch'而不是'Elasticsearch'(與'S'的區別)。 – Kip