В моей базе данных MySQL есть таблица с полем varchar, в котором есть сортировка utf8_general_ci. Моя проблема в том, что когда я делаю запрос, как
SELECT title FROM node WHERE title LIKE "%ñ%"
в PHP он возвращает все заголовки, в которых есть «n» и «ñ». Я попытался сделать тот же запрос с терминала в Linux, и я не получил никаких результатов. Я не знаю, из-за отсутствия поддержки юникода в терминале или нет.
Как я могу отфильтровать свой запрос для отображения результатов, которые содержат выражение с точными символами, которые я хочу? Это проблема передачи PHP в MySQL? У меня есть PHP 5.3 и MySQL 5.1.
PS:
я знаю
SELECT title FROM node WHERE title LIKE "%n%"
возвращает те же результаты (с «n» и «ñ»), что и запрос выше, я не против этого. Я просто хочу иметь возможность фильтровать выражения с соответствующими символами Юникода.
По умолчанию MySQL пытается быть полезной, рассматривая эквивалентные символы как равные. Это включает в себя акценты на персонажах. Есть раздел документация посвященный этому.
Попробуйте использовать binary
оператор:
SELECT title FROM node WHERE title LIKE BINARY '%ñ%'
Других решений пока нет …