模糊查询之FIND_IN_SET()效率笔记
如下图所示,想要从 roles
中查询 id
为 4
的记录。
方法一:
$users = DB::table('users')
->where('column_name', 'LIKE', '%,4,%')
->orWhere('column_name', 'LIKE', '4,%')
->orWhere('column_name', 'LIKE', '%,4')
->get();
方法二:
$users = DB::table('users')
->whereRaw("FIND_IN_SET('4', column_name) > 0")
->get();
号外:
还有一种巧妙的设计,就是在值入库时人为增加一个逗号,4,12,14,56,44,65,24,
这种。在查询时,直接用以下语句:
$users = DB::table('users')
->where('column_name', 'LIKE', '%,4%')
->get();
注意这里where('column_name', 'LIKE', '%,4%')
的条件,是不是很妙。