Так что я пытаюсь закодировать PHP-скрипт, но мы просто оставим его в SQL-части вещей, так как именно здесь возникает проблема. У меня есть запрос SELECT *
, который следует брать только из строк, где совпадает идентификатор пользователя, и идентификатор значка соответствует их идентификатору пользователя, а затем подчеркиванию. Хотя, он захватывает результаты, которые не следует включать?Запрос MySQL LIKE% ...% query возвращает другие результаты?
Вот мой SQL-запрос:
SELECT *
FROM `user_badges`
WHERE `user_id` = 1
AND `badge_id` LIKE '%1_%'
Это должно возвращать только значки, которые начинаются/содержат 1_
, он захватывает все значки, которые содержат/начинаются с 1_
, но это также захват it215
. Если я ищу другой идентификатор пользователя, например, свой собственный, он будет захватывать все значки с помощью 3_
И он также захватывает ACH_RoomDecoFurniCount31
, что сбивает с толку, потому что оно не содержит 3_
. Может быть, есть еще кое-что? Может ли кто-нибудь указать мне в правильном направлении.
Возможный дубликат [? Почему "\ _" (подчеркивание) матч "-" (дефис)] (http://stackoverflow.com/questions/8236818/why -does-underscore-match-hyphen) – baao
_ «Итак, я пытаюсь закодировать PHP-скрипт, но мы просто оставим его в SQL-части вещей, так как именно здесь возникает проблема» _ Thankyou! Вы были бы удивлены, сколько людей этого не делают. –
Это не сработает, если вы можете найти идентификатор пользователя в любом месте, потому что '% 1_%' соответствует '31_abc', а также' 1_abc'. Если вы полностью (и недвусмысленно) не разделите идентификатор пользователя (например, сделаете его «только в начале»?), Вы не сможете получить однозначный ответ. Пересмотрите свой формат идентификатора значка. –