MySQL通配符返回仅与连字符和数字匹配

时间:2012-07-12 02:57:37

标签: php mysql

在我的数据库中,我有以下行,如果它是重复的话会增加:

foo
foo-1
foo-2
foo-3
˚F
f-1
F-2
F-3
酒吧
直板1

我想查询数据库并获取最后一个f - #。我尝试过使用下面的LIKE运算符:

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

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

1 个答案:

答案 0 :(得分:0)

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

如果您不想OR,则替代方法是使用REGEXP匹配。但是,如果这样做,您可能会放弃使用查询索引的功能。