我有一个带有前缀列的special_number
表。该列包含022
,021
等数据。我有一个号码0216627363021
。如何使用LIKE
关键字匹配列以获取行。
$rate = Special::where('user_id',$user_id)
->where(DB::raw("prefix LIKE $number"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-1)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-2)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-3)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-4)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-5)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-6)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-7)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-8)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-9)"))
->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-10)"))
->first();
但它返回NULL。问题出在哪儿?谢谢。
答案 0 :(得分:0)
如果您想匹配值的一部分,请使用通配符like
:
$rate = Special::where('user_id', $user_id)
->where('prefix', 'like', '%' . $number . '%')
->first();
这将在任何点匹配前缀内的字符串。如果您想获得以数字开头的前缀值的结果,请使用:
->where('prefix', 'like', $number . '%')
或者,如果要匹配以该数字结尾的前缀值,请使用:
->where('prefix', 'like', '%' . $number)