2012-12-22 12 views
51

Powiel możliwe:
Mysql Like Case SensitiveJak wymusić na mysql LIKE rozróżnianie wielkich i małych liter?

Mysql ignoruje argumenty za jego jak porównań.

Jak zmusić go do porównywania wielkości liter w LIKE?

+1

nie będę downvote lub zbliżenie oceniany jako nie mogę w rzeczywistości znaleźć coś godnego tych głosów. Zgadzam się jednak z Andym, odpowiedź można było znaleźć szybciej przy niewielkim wyszukiwaniu w Internecie. Nazwałbym to "lenistwem", ale 61,3 tys. Rep nie mówi leniwych. Być może przepełnienie-holic –

+0

@JamesWebster OK, fess up czas. Próbuję uzyskać kapelusz "odpowiedz na własne pytanie". Lame, i tak SO-holic. Jeśli nie zdobędzie głosu w ciągu kilku minut, zamknę go. Mimo to pomyślałem, że pytanie zasługiwało na ocenę: – Bohemian

+0

@AndyRay pięć lat później, używanie Google wywołuje tę odpowiedź w pierwszej kolejności :) – Kip

Odpowiedz

84

Zastosowanie LIKE BINARY:

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

To jest lepszy sposób – Weltkind

+0

@Weltkind Dlaczego jest lepiej? (Nie mówię, że się zgadzam lub nie zgadzam, po prostu ciekawiam, dlaczego tak mówisz) – Kip

+0

@Kip to lepsze IMHO, ponieważ nie zakłada ono żadnego zestawu znaków i działa z sortowaniem. Po prostu działa w sposób "bezpośredni", który wszyscy rozumieją. Łatwiej też zapamiętać (wystarczy zapamiętać jedno słowo kluczowe: 'BINARY') i łatwiejszy kod (nie musisz pamiętać poprawnych nazw zestawów znaków, takich jak' utf8_bin') – Bohemian

26

Inną alternatywą jest użycie COLLATE,

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

Nice. To otwiera możliwość zrobienia niestandardowego dopasowania przy użyciu niestandardowego sortowania (choć całkowicie nieprzenośne, jeśli nie potrzebujesz go, potrzebujesz go – Bohemian

+2

Nie działa. W wynikach nie jest uwzględniana wielkość liter – Nick

+0

@Ustaw dla mnie. "GDZIE Pytaj LIKE '% ElasticSearch%' COLLATE utf8_bin' zwraca 'ElasticSearch', ale nie' Elasticsearch' (różnica w obudowie 'S'). – Kip