在Laravel 5.1中工作 我需要获取此查询的数据:
3E
我无法将我的绑定参数放到适当的位置,这应该是这样的:
$query = "top";
$data['rawQuery'] = "category_names REGEXP '(?<![a-zA-Z])".'{?}'.'((es)?|(s?))(?![a-zA-Z])';
$data['bindParams'] = [$query];
$result = DB::table($this->table)
->whereRaw($where['rawQuery'], isset($where['bindParams']) ? $where['bindParams'] : array())
->select($selectedColumns)
->get();
然而我得到了这个:
select * from product_categories where category_names REGEXP '(?<![a-zA-Z])top((es)?|(s?))(?![a-zA-Z])
不同之处在于,我的查询值设置为错误的位置。 请详细说明。
答案 0 :(得分:0)
您正在尝试匹配可选择以s
或es
结尾的字词。虽然这没有考虑到其他可能的结局,但您可能正在寻找一个完整的单词选项,即单词边界。在MySQL中,您需要使用[[:<:]]
和[[:>:]]
。请注意,可以通过具有备选方案的分组构造来定义可选结尾 - (es|s|)
。
$data['rawQuery'] = "category_names REGEXP '[[:<:]]".'{?}'.'(es|s|)[[:>:]]';