Drupal 7 - 使用db_select不区分大小写LIKE

Sar*_*els 3 php mysql drupal case-insensitive drupal-7

我无法使用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();
Run Code Online (Sandbox Code Playgroud)

随着?department=Chemistry在URL中,我得到三个结果.随着?department=chemistry在URL中,我没有得到任何结果.当我尝试时$results->condition('UPPER(Department)'...,我收到此错误:

PDOException:SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'UPPERDepartment':SELECT 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.

Aur*_*kus 5

什么是Department字段的排序规则?,对于ex utf8_unicode_ci,它应该是前缀*_ci(不区分大小写)