PS. Регулярно вижу при SQL-операторе LIKE приведение к одному регистру (lower, lowercase). Зачем? LIKE регистронезависим и сам все это делает. Даже с русскими буквами .
О! Я открыл для себя Америку, зачем надо ставить lowercase
.
LIKE вовсе не приводит строки сравнения к одному регистру.
Может, кому еще тоже будет полезно и интересно.
За сравнение строк в SQL через LIKE (да и вообще за сравнение и сортировку строк) отвечают настройки collation_*
Так вот если там стоит *_ci (например, cp1251_general_ci), то сравнение происходит регистронезависимо (по таблице веса символа?) и lowercase не нужен.
Если стоит *_bin, то сравнение происходит бинарно, по коду символа (т.е. регистрозависимо) и lowercase нужен.
Если стоит *_cs, то сравнение тоже происходит регистрозависимо, как и при *_bin, но некоторые буквы (Е и Ё, е и ё для русскоязычных таблиц) считаются одинаковыми при сравнении, а также правильно располагаются в алфавитной сортировке невзирая на то, что буквы Ёё стоят в самом конце кодовой таблицы.
Так что lowercase таки нужен, т.к. по умолчанию в MySQL стоит latin1_general_ci, но неизвестно, какая настройка будет на сервере хостера.