#mysql #search
#mysql #Поиск
Вопрос:
У меня возникли проблемы с поиском в нескольких таблицах разных значений. Когда я ищу «paul», я ничего не получаю, но если я ищу «Paul», я получаю соответствующих лиц для заказов с именем Paul.
$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 (двоичный), но моя проблема все еще остается нерешенной..
Все предложения приветствуются..
С уважением
Ответ №1:
из руководства по mysql:
Набор символов и параметры сортировки по умолчанию — latin1 и latin1_swedish_ci, поэтому сравнения небинарных строк по умолчанию не учитывают регистр. Это означает, что если вы выполняете поиск с помощью col_name ТИПА ‘a%’, вы получаете значения всех столбцов, которые начинаются с A или a. Чтобы сделать этот поиск чувствительным к регистру, убедитесь, что один из операндов имеет параметры сортировки с учетом регистра или двоичные. Например, если вы сравниваете столбец и строку, которые оба имеют набор символов latin1, вы можете использовать оператор сортировки, чтобы любой из операндов имел параметры сортировки latin1_general_cs или latin1_bin:
смотрите: чувствительность mysql к регистру
Ответ №2:
Смотрите http://bugs.mysql.com/bug.php?id=22343
Насколько я понимаю, убедитесь, что все является строкой, если вы хотите выполнить поиск по строке.
Кроме того, переключите кодировку обратно на без учета регистра. Нет необходимости в том, чтобы он был двоичным.