2016-07-28 190 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 –