Mysql搜索不区分大小写

问题描述

我在多个表中搜索不同的值时遇到问题。当我搜索“保罗”时,我什么也没有,但是如果我搜索“保罗”,我会得到相应的人以保罗的名字命名。
$get_orders = MysqL_query(\"
SELECT
  co.id,co.final_id,co.shop_id,co.customer_id,co.payment_type,co.payment_currency,co.billing_email,co.billing_first_name,co.billing_last_name,co.delivery_first_name,co.delivery_last_name,UNIX_TIMESTAMP(co.order_created) AS order_created,c.email,s.site_name,MATCH(co.final_id,co.order_created) 
AGAINST (\'$match_against\' IN BOOLEAN MODE) AS score 
FROM customer_orders AS co 
LEFT JOIN customers AS c ON c.id = co.customer_id 
LEFT JOIN shops AS s ON s.id = co.shop_id WHERE co.status = \'{$os}\' 
ORDER BY score DESC 
LIMIT $offset,$views_page\") or die(MysqL_error());
我一直在寻找解决此问题的方法。我尝试使用UPPER,将数据库排序规则从utf8_general_ci更改为utf8_bin(二进制),但是我的问题仍然没有解决。 所有建议表示赞赏。 问候     

解决方法

从mysql手册:   默认字符集和排序规则为latin1和   latin1_swedish_ci,因此非二进制字符串比较是大小写   默认不敏感。这意味着如果您使用col_name搜索   像\ a%\,您将获得以A或a开头的所有列值。为了   此搜索区分大小写,请确保其中一个操作数具有一个   区分大小写或二进制排序规则。例如,如果您正在比较   一列和一个都具有latin1字符集的字符串,您可以   使用COLLATE运算符使任一操作数具有   latin1_general_cs或latin1_bin排序规则: 请参阅:mysql区分大小写     ,参见http://bugs.mysql.com/bug.php?id=22343 据我了解,如果要搜索字符串,请确保所有内容都是字符串。 同样,将字符集切换回不区分大小写。无需将其为二进制。