How to conduct an Accent Sensitive search in MySql

If your searches on that field are always going to be accent-sensitive, then declare the collation of the field as utf8_bin (that’ll compare for equality the utf8-encoded bytes) or use a language specific collation that distinguish between the accented and un-accented characters.

col_name varchar(10) collate utf8_bin

If searches are normally accent-insensitive, but you want to make an exception for this search, try;

WHERE col_name="abád" collate utf8_bin

Update for MySQL 8.0, plus addressing some of the Comments and other Answers:

  • The CHARACTER SET matches the beginning of the COLLATION.
  • Any COLLATION name ending in _bin will ignore both upper/lower case and accents. Examples: latin1_bin, utf8mb4_bin.
  • Any COLLATION name containing _as_ will ignore accents, but do case folding or not based on _ci vs _cs.
  • To see the collations available (on any version), do SHOW COLLATION;.
  • utf8mb4 is now the default charset. You should be using that instead of utf8.
  • It is better to have the CHARACTER SET and COLLATION set ‘properly’ on each column (or defaulted by the table definition) than to dynamically use any conversion routine such as CONVERT().

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)