0

i have this table in UTF8 (collation is utf8_bin in case it matters).

I need to search in it for strings using LIKE '%$searchstring%' .

Right now you have to use the exact case in order for the results to show up. Is there a way to make it case insensitive ?

Thank you

UPDATE sorry, found the answer.

Community
  • 1
  • 1
pixeline
  • 17,430
  • 11
  • 80
  • 108

2 Answers2

2

Use:

WHERE LOWER(t.column) LIKE LOWER('%search_string%')

..or:

WHERE UPPER(t.column) LIKE UPPER('%search_string%')

References:

OMG Ponies
  • 314,254
  • 77
  • 507
  • 490
  • according to http://stackoverflow.com/questions/234591/upper-vs-lower-case/234751#234751, comparison with 'lower' or 'upper' can be incorrect for some languages – akavel Nov 10 '09 at 11:10
  • What about `... (etc COLLATE utf8__ci) LIKE '%searchstring%'`? By the way, if you want "Çilek" to show up in results when the user searches for "cilek", you can use `utf8_unicode_ci`, that is, both case insensitive and collation insensitive search. – Halil Özgür Jun 17 '11 at 08:42
0

Your collation specifies the case-sensitivity. Use this instead:

utf8_ci

AJ.
  • 26,430
  • 17
  • 82
  • 91