20190529のSQLに関する記事は1件です。

Laravel(Eloquent)でLIKE検索で濁点/半濁点を区別したい→LIKE BINARYを使う

確認環境
・laravel v5.7.28
・MySQL 8.0
・PHP 7.3.0

MySQLのLIKEでは濁点/半濁点の区別を行いません。大文字と小文字の区別もしません。
厳密に一致させるときは、LIKE BINARY をつかいます。

ふつうのSQLではこう。

SELECT * FROM user WHERE name LIKE BINARY '%やまだ%;

Eloquentではこうやります。

$user->where('name','LIKE BINARY','%やまだ%');

以前はサポートされていなかったようですが
どこかのタイミングで修正されました。
https://github.com/laravel/framework/commit/76f6da4dab1e9e4847362a2b2b0c428e25805f0c#diff-cc3d43e01028390141596ae0da939930

サポートされていないバージョンを使用していて、アップデートはできないよという場合は
上記コミットと同じようにコードを修正すればOKです。(自己責任)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む