2012-07-12 54 views
0

在我的数据库匹配,我有以下行,如果它是一个重复的,这将增加:MySQL的通配符回报只能用连字符和数字


富-1
富-2
富-3
˚F
F-1
F-2
F-3

直板1

我想查询分贝,并得到最后f-#。我用下面的LIKE操作尝试:

SELECT * FROM links WHERE slug LIKE '$slug%' ORDER BY timestamp DESC LIMIT 1"; 

我的问题
如果$塞== f,将它返回富-3而不是F-3。有没有更好的方法来使用%通配符?

回答

0
SELECT * 
FROM links 
WHERE slug LIKE '$slug-%' OR slug = '$slug' 
ORDER BY timestamp DESC 
LIMIT 1 

的选择,如果你不想做一个OR,将使用REGEXP比赛。但是,如果您这样做,您可能会放弃为查询使用索引的功能。

+0

我试过'$ slug-%'但是失败。 – twobergs 2012-07-12 03:33:12

+0

你试过'OR'查询吗? – Amber 2012-07-12 03:52:25

+0

是的。使用上面的建议,直到我删除'$ slug-%'中的连字符后才起作用。 – twobergs 2012-07-12 04:04:41