Я не могу получить запрос без учета регистра, используя MySQL и Drupal 7. Вот мой код модуля:
$results = db_select('people_table', 'p')->fields('p');
if (array_key_exists('department', $_GET)) {
$results->condition('Department', '%' . db_like($_GET['department']) . '%', 'LIKE');
}
return $results->orderBy('Name', 'ASC')->execute();
С ?department=Chemistry
в URL я получаю три результата. С ?department=chemistry
в URL я не получаю результатов. Когда я пытаюсь $results->condition('UPPER(Department)'...
, я получаю эту ошибку:
PDOException: SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец 'UPPERDepartment' в 'предложении where: ВЫБРАТЬ p. * FROM {people_table} p WHERE (UPPERDepartment LIKE: db_condition_placeholder_0 ESCAPE' \\ ') ORDER BY Name ASC;
Так что, похоже, он съел мои скобки. Как я могу сделать без учета регистра LIKE
?
Редактировать: сопоставление для столбца Department
, а также для всей таблицы: utf8_bin
. Этот ответ гласит: «Единственное специальное предложение - utf8_bin, предназначенное для сравнения символов в двоичном формате». Я не знаю, почему было выбрано это сопоставление, так как все данные в таблице - текст на английском языке. Я мог бы просто изменить сопоставление на utf8_general_ci .