所以我试图编写一个PHP脚本,但我们只是将它留在SQL的一部分,因为这是问题出现的地方。我有一个SELECT *
查询,它应该只从用户ID匹配的行抓取,并且徽章ID符合其用户ID,后跟下划线。虽然,这是不应该包含的结果吗?MySQL查询LIKE%...%查询返回其他结果吗?
这里是我的SQL查询:
SELECT *
FROM `user_badges`
WHERE `user_id` = 1
AND `badge_id` LIKE '%1_%'
这应该只返回启动/包含1_
徽章,这是抢占了所有那些包含/与1_
开始徽章但它也抓住it215
。如果我搜索不同的用户ID(例如我自己的用户ID),它将抓取所有徽章并使用3_
,同时也抓取ACH_RoomDecoFurniCount31
,因为它不包含3_
。也许还有更多呢?有人能请我指出正确的方向吗?
的可能的复制[?为什么 “\ _”(下划线)匹配 “ - ”(连字符)(http://stackoverflow.com/questions/8236818/why -does-underscore-match-hyphen) – baao
_“所以我想编写一个PHP脚本,但是我们只是把它留在SQL的一部分,因为这是问题出现的地方”_谢谢!你会惊讶有多少人不这样做。 –
无论如何,如果你可以在任何地方找到用户ID,这将无法工作,因为'%1_%'匹配'31_abc'和'1_abc'。除非您完全(并明确)对用户标识进行分隔(例如,将其设置为“仅在开始时”?),否则您将无法获得明确的匹配。重新考虑您的徽章ID格式。 –