2016-07-28 142 views
0

我正在为Laravel项目工作,并且发现了一个问题。在我的数据库(MySQL)字段存储为大写。当我像下面一样搜索时,我遇到了问题。Mysql搜索“我”不区分大小写

$query->where(function ($query) use ($q) { 
    $query->orWhere('product', 'LIKE', '%'.$q.'%'); 
    $query->orWhere('stock_code', 'LIKE', '%'.$q.'%'); 
    $query->orWhere('barcode', 'LIKE', '%'.$q.'%'); 
    $query->orWhere('hs_code', 'LIKE', '%'.$q.'%'); 
}); 

对于实施例FINDIK是土耳其字。当用户搜索为fındık未找到结果。

我对MySQL表使用unicode_general_ci。我的头码如下所示。

<!doctype html> 
<html lang="tr"> 
<head> 
    <meta charset="UTF-8"> 

我该怎么办?有些人提供MySQL LOWER方法。但我希望有更好的办法。

+0

一些人提供或SQL优惠? (: - :) –

+0

那么,你总是可以使用UPPER :-) – antorqs

+0

你确定你使用FINDIK获得了结果吗?据我所知mysql默认情况下是不区分大小写的 –

回答

0
$query->where(function ($query) use ($q) { 
    $query->orWhere('product', 'ilike', '%'.$q.'%'); 
    $query->orWhere('stock_code', 'ilike', '%'.$q.'%'); 
    $query->orWhere('barcode', 'ilike', '%'.$q.'%'); 
    $query->orWhere('hs_code', 'ilike', '%'.$q.'%'); 
}); 

请尽量使用ILIKE

+0

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在“ilike”附近使用正确的语法?或'stock_code' ilike?或“条形码”? ('stock_quantity'> 0)和('product' ilike%fındık%'或'stock_code' ilike%fındık%')的SQL语句,或'条码'ilike%fındık%或'hs_code' ilike%fındık%)) –

+0

它不起作用 –

+0

'ILIKE'不适用于MySQL,只适用于PostgreSQL https://www.postgresql.org/docs/8.3/static /functions-matching.html –