Процедура MySQL. Как сопоставление с образцом - кириллическая строка - PullRequest
0 голосов
/ 14 февраля 2012

У меня проблемы с одной процедурой MySQL. Сама процедура работает, но только когда я использую латинские символы. Если я использую кириллическую строку, это не сработает. Таблица находится в utf8_general_ci вверху страницы, у меня есть "SET NAMES 'utf8'". Любая помощь в отношении этого поста приветствуется. Ниже мой код.

CREATE PROCEDURE `selUsers`(IN usrNme VARCHAR(25))
BEGIN


SELECT *
    FROM users WHERE 1 
        AND (user_real_name LIKE CONCAT('%', usrNme, '%') OR user_company LIKE CONCAT('%', usrNme, '%') OR user_name LIKE CONCAT('%', usrNme, '%'))
    ORDER BY user_real_name ASC LIMIT 0, 15;

    END

1 Ответ

2 голосов
/ 14 февраля 2012

Чтобы заставить его работать, вы должны использовать SET NAMES после того, как откроете соединение и выберите базу данных, чтобы сообщить mysql, что клиент будет использовать определенный набор символов для отправки данных.Проверьте здесь для деталей.Для вашего конкретного случая это должно быть

SET NAMES utf8

Кроме того, я бы использовал utf8_unicode_ci вместо utf8_general_ci.Это правда, что utf8_unicode_ci медленнее, чем utf8_general_ci, но вы получите лучшее сравнение (более точное) ... utf8_general_ci подходит только для русского и болгарского подмножества кириллицы.Дополнительные буквы, используемые в белорусском , македонском , сербском и украинском , не отсортированы должным образом ... вы должны иметь это в виду, еслиВы будете использовать некоторые буквы из этих кириллических алфавитов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...