Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите - поиск по русским буквам. / 9 сообщений из 9, страница 1 из 1
16.03.2015, 18:30:22
    #38906289
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
Доброго дня! С MySQL не очень знаком, поэтому удивлен проблемой, с которой столкнулся, очевидно из-за кодировки.

like '%Человек%' не находит, а like '%еловек%' находит правильно. Но тоже только после того, как применил ф-цию lower().

Таблицы созданы в utf8_general_ci

Наверняка же какие-то варианты конвертации существуют - подскажите, пож!
...
Рейтинг: 0 / 0
18.03.2015, 22:35:23
    #38909131
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
Братья по разуму! Неужели не поможете?
...
Рейтинг: 0 / 0
18.03.2015, 23:00:03
    #38909144
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
Выпрямляй руки...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
mysql> CREATE TABLE test (txt TEXT CHARACTER SET utf8 COLLATE utf8_general_ci);
Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO test
    -> SELECT 'Человек - это звучит гордо' UNION ALL
    -> SELECT 'Человек, рюмку водки!' UNION ALL
    -> SELECT 'Баранкин, будь человеком.' UNION ALL
    -> SELECT 'Может, хватит?';
Query OK, 4 rows affected (0.05 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM test;
+-------------------------------------------------+
| txt                                             |
+-------------------------------------------------+
| Человек - это звучит гордо                      |
| Человек, рюмку водки!                           |
| Баранкин, будь человеком.                       |
| Может, хватит?                                  |
+-------------------------------------------------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM test WHERE txt like '%Человек%';
+-------------------------------------------------+
| txt                                             |
+-------------------------------------------------+
| Человек - это звучит гордо                      |
| Человек, рюмку водки!                           |
| Баранкин, будь человеком.                       |
+-------------------------------------------------+
3 rows in set (0.05 sec)
...
Рейтинг: 0 / 0
18.03.2015, 23:00:20
    #38909145
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
FAM,

Брат по разуму, что я не так делаю?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Database changed
mysql> DROP TABLE IF EXISTS `fam`;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE `fam` (
    ->   `id` int(11) NOT NULL AUTO_INCREMENT,
    ->   `name` varchar(40) DEFAULT NULL,
    ->   PRIMARY KEY (`id`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO `fam` (`name`) VALUES ('Человек'), ('Обизяна'), ('Мухтар');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT `id`, `name`
    -> FROM `fam`
    -> WHERE `name` LIKE '%Человек%'
    -> UNION ALL
    -> SELECT `id`, `name`
    -> FROM `fam`
    -> WHERE `name` LIKE '%еловек%';
+----+----------------+
| id | name           |
+----+----------------+
|  1 | Человек        |
|  1 | Человек        |
+----+----------------+
2 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
19.03.2015, 06:10:11
    #38909263
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
MikkiMouse,

а что тут не так? Каждый из селектов выводит по одной записи - ровно столько, сколько и должен...
...
Рейтинг: 0 / 0
19.03.2015, 08:14:07
    #38909290
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
tanglir,

Спасибо за участие!
Тривиальный пример ничего не поясняет. Такая модель и у меня работает.

*******
Но вопрос в другом - как привести к единой кодировке текст запроса в like?
*********

Я поэтому и не стал описывать пример простенький, а жду ответ тех, кто сталкивался. У меня опыт почти 30 лет программирования и ваш пример мне понятен.
...
Рейтинг: 0 / 0
19.03.2015, 08:35:01
    #38909304
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
FAMНо вопрос в другом - как привести к единой кодировке текст запроса в like?Вопрос скорее в том, что именно хранится в записях, которые
FAMlike '%Человек%' не находит, а like '%еловек%' находит правильно. Но тоже только после того, как применил ф-цию lower().Может, покажете пару-тройку таких?
...
Рейтинг: 0 / 0
19.03.2015, 08:51:33
    #38909316
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
FAMкак привести к единой кодировке текст запроса в like?
http://dev.mysql.com/doc/refman/5.6/en/cast-functions.html#function_convert
...
Рейтинг: 0 / 0
19.03.2015, 19:51:36
    #38910402
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите - поиск по русским буквам.
Akina,

Спасибо!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите - поиск по русским буквам. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]