Трюк дня. Как сделать Case Sensitive сравнение в MySQL. Решение



Небинарные строки (CHAR, VARCHAR, TEXT) в MySQL по умолчанию не чувствительны к регистру. Поэтому запрос SELECT * FROM enterprise WHERE company = ‘SPG‘ выведет все три строки.



Для вывода только одной записи с ‘SPG’ существуют следующие решения:



1. Приведение столбца к типу BINARY (т.к. тип BINARY чувствителен к регистру):



SELECT * FROM enterprise WHERE BINARY company = ‘SPG‘;



2. Выбор чувствительного к регистру набора символов с помощью COLLATE:



SELECT * FROM enterprise WHERE company COLLATE utf8mb4_0900_as_cs = ‘SPG‘;



Детальную документацию смотрите здесь.



#tips