我在多个表中搜索不同的值时遇到问题。当我搜索“保罗”时,我什么都没得到,但是如果我搜索“保罗”,我就会得到相应的人名为保罗。
$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.billing_first_name, co.billing_last_name, co.delivery_first_name, co.delivery_last_name, 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(二进制)但我的问题仍然没有解决..
所有建议都表示赞赏..
此致
答案 0 :(得分:1)
请参阅http://bugs.mysql.com/bug.php?id=22343
根据我的理解,如果你想搜索字符串,请确保所有内容都是字符串。
此外,将charset切换回不区分大小写。不需要它是二进制的。
答案 1 :(得分:1)
来自mysql手册:
默认字符集和排序规则是latin1和 latin1_swedish_ci,所以非二进制字符串比较就是这种情况 默认情况下不敏感。这意味着如果使用col_name进行搜索 LIKE'a%',您将获得以A或a开头的所有列值。要做 这个搜索大小写敏感,确保其中一个操作数有一个 区分大小写或二进制排序规则。例如,如果您正在进行比较 一个列和一个字符串都有latin1字符集,你可以 使用COLLATE运算符使任一操作数具有 latin1_general_cs或latin1_bin整理: