Как сделать 'select' с учетом регистра 'like' в MySQL? - PullRequest
0 голосов
/ 07 ноября 2011

Я хочу отфильтровать свои столбцы с помощью предложения like in select, значение по умолчанию like в MySQL чувствительно к регистру, но я хочу, чтобы оно чувствительно к регистру. Как это сделать?

Я хочу этот запрос:

select * from my_table where column1 like '%abc%'

и этот запрос:

select * from my_table where column1 like '%Abc%'

для получения разных результатов.

1 Ответ

9 голосов
/ 07 ноября 2011

Набор символов и параметры сортировки по умолчанию: latin1 и latin1_swedish_ci, поэтому при сравнении недвоичных строк по умолчанию регистр не учитывается. Это означает, что при поиске с col_name LIKE 'a%' вы получите все значения столбцов, которые начинаются с A или a. Чтобы сделать этот поиск чувствительным к регистру, убедитесь, что один из операндов имеет чувствительность к регистру или двоичную сортировку. Например, если вы сравниваете столбец и строку, для которых оба имеют набор символов latin1, Вы можете использовать оператор COLLATE, чтобы у любого операнда была сортировка latin1_general_cs или latin1_bin:

col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin

MySQL :: MySQL 5.6 Справочное руководство :: C.5.5.1 Чувствительность к регистру при поиске строк (выделение добавлено)

...