if ($accentsensitive) {
return "LOWER($fieldname) $LIKE LOWER($param) COLLATE utf8_bin ESCAPE '$escapechar'";
} else {
- return "$fieldname $LIKE $param ESCAPE '$escapechar'";
+ // Set a case sensitive collation if using utf8_bin.
+ if ($this->get_dbcollation() == 'utf8_bin') {
+ return "$fieldname $LIKE $param COLLATE utf8_unicode_ci ESCAPE '$escapechar'";
+ } else {
+ return "$fieldname $LIKE $param ESCAPE '$escapechar'";
+ }
}
}
}
$records = $DB->get_records_sql($sql, array('aui'));
$this->assertCount(1, $records);
+ // Test LIKE under unusual collations.
+ $sql = "SELECT * FROM {{$tablename}} WHERE ".$DB->sql_like('name', '?', false, false);
+ $records = $DB->get_records_sql($sql, array("%dup_r%"));
+ $this->assertCount(2, $records);
+
$sql = "SELECT * FROM {{$tablename}} WHERE ".$DB->sql_like('name', '?', true, true, true); // NOT LIKE.
$records = $DB->get_records_sql($sql, array("%o%"));
$this->assertCount(3, $records);