所以我試圖編寫一個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格式。 –