выбор аналогичных значений в mysql (что-то, кое-что, что-то, что-то должно быть одинаковым) - PullRequest
2 голосов
/ 04 декабря 2011

Я создаю систему тегов, и мне нужно получить похожие теги, поэтому, когда пользователь вводит «что-то», «что-то», «что-то» или «что-то» и т. Д., Он получает все соответствующие строки в таблице.

Если бы я использовал utf8_general или utf8_unicode на поле, это был бы кусок пирога. Я мог бы просто

SELECT * FROM tags WHERE tag LIKE 'some thing'

но, увы, мне нужно использовать utf8_bin в этой таблице. Итак, что мне делать? Я не очень большой эксперт по MySQL. Я думаю, что я должен использовать CAST () или CONVERT (), но я не уверен, как.

Вторая часть, получение чего-то, чего-то, чего-то, чего-то и так далее, - это еще одна проблема, но я думаю, что могу решить ее самостоятельно с помощью регулярных выражений

РЕДАКТИРОВАТЬ: РЕШЕНИЕ Я думал, что возиться со всем этим преобразованием и регулярным выражением может быть не лучшим способом. Вместо этого я буду использовать методы моей платформы, генерировать URL-адрес «имени» данного тега и хранить его в той же строке БД.

1 Ответ

2 голосов
/ 04 декабря 2011

Да, конвертировать: -

mysql> select convert( "söme thing" using utf8) = 
convert( "some thing" using utf8);
+------------------------------------------------------------------------+
| convert( "söme thing" using utf8) = convert( "some thing" using utf8)  |
+------------------------------------------------------------------------+
|                                                                      1 |
+------------------------------------------------------------------------+

Но я думаю, что нет пользы использовать utf8_bin

При обработке поиска по тегу можно рассмотреть вопрос о сохранении

  • чистая версия (некоторые)
  • дополнительная таблица для сопоставления некоторых и других вариаций с чистой версией
  • когда пользователь может искать söme, вы можете посмотреть söme = some
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...