Faire une recherche case insensitive mariadb
Parfois il nous arrive de vouloir faire une recherche sur un champ en ignorant la case.
La mauvaise façon de le faire serait :
SELECT * FROM table WHERE upper(champ) = upper(‘morgan’);
Faire ceci est catastrophique en terme de performance, et en plus, si jamais on met un index sur le champ, il ne pourra pas fonctionner car les index sont sensible a la case.
Heureusement les sgbd modernes viennent avec des solutions. Pour mariaDB/Mysql on peut simplement utiliser un collate différent. Les collates finissant par _bin sont case sensitive et _ci sont case insensitive.
SELECT * FROM table WHERE champ = ‘morgan’ COLLATE utf8mb4_unicode_ci;