我有以下查询:
SELECT `admin_users`.*
FROM `admin_users`
WHERE (avatar REGEXP 'avatars/Name-[0-9]+.jpg+')
ORDER BY `admin_users`.`avatar`
DESC LIMIT 1
如果我有类似的话,那就没关系了。
avatars/Name-5.jpg
avatars/Name-6.jpg
但是如果我有,avatars/Name-15.jpg
,例如,它在查询中不会返回。
换句话说,它只适用于1位数,而不是更多。我该如何解决?
答案 0 :(得分:0)
当比较字符串(这是avatar
是什么)时,“avatars / Name-1 ...”出现在“avatars / Name-5 ...”之前,只是因为字符串“1”出现在“5”之前。
通过嵌入数字来订购它们是不切实际的。这可以做你想要的,但它非常神秘:
ORDER BY 0 + MID(avatar, 14)
解释
0+'abc'
会传递0
,因为abc
开头的任何内容都看起来像数字。)如果左侧部分在所有情况下都不是14个字符,那么诀窍就会失败。它可能变得非常复杂,以至于在SQL中“不可能”。