Contents
はじめに
仕事に飽き足らずセルフ研究。
あるシステムのアカウント一覧テーブルの中の
アカウントのトップページともなるuseridとかいうカラムが厄介で
このカラムでアカウント絞らないといけないんですが
普通にイコールで検索すると当然 hoge と Hoge と HOGE を別アカウントとして検索しやがる。orz
いうこと聞かないんじゃ
WHERE userid collate utf8mb4_unicode_ci LIKE 'hoge'
こういうクエリを書ければ幸せなんですが
(´・ω・`)like使ってるくせに前方一致でも部分一致でも後方一致でもない
文字の表記揺れだけ拾いたいんだ
$this->db->where('userid collate utf8mb4_unicode_ci like ',$userid, false );
こうとか
$this->db->where('userid collate utf8mb4_unicode_ci like '. $userid);
ピリオドでくっつけるもっともぞんざいなやり方ね。
こうやったら、変な所でエスケープしやがった。orz
(´・ω・`)where句のいちばん後ろにfalseを入れたらエスケープしない約束だよね
解決
like句を使ってるなら、$this->db->likeを使ってみようと思い
$this->db->like('userid collate utf8mb4_unicode_ci', $userid, 'none', false);
こうやってみたら、成功。
個人的にはnoneとfalseがツボです。