繁体   English   中英

MySQL Regexp无法正常工作

[英]MySQL Regexp won't work

我有以下查询:

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位数,而不适用于更多位数。 我该如何解决?

比较字符串( avatar是什么)时,“化身/名称-1 ...”位于“化身/名称-5 ...”之前,仅是因为字符串 “ 1”位于“ 5”之前。

用一个嵌入式数字对它们进行排序是不现实的。 这会做您想要的,但是很神秘:

ORDER BY 0 + MID(avatar, 14)

解释

  1. MID将以“ avatars / Name-15.jpg”的第14个字符开头,并提取“ 15.jpg”。
  2. 0+将采用该字符串,将其转换为数字并提供数字 15。(当字符串变成数字时,只要看起来像数字,就会采用第一个字符。因此, 0+'abc'将传递0 ,因为abc开头没有看起来像数字的东西。)

如果在所有情况下左侧部分都不都是14个字符,则该技巧将失败。 而且它可能变得如此复杂以至于在SQL中“不可能”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM