gpt4 book ai didi

MySQL 正则表达式不起作用

转载 作者:行者123 更新时间:2023-11-29 21:26:19 24 4
gpt4 key购买 nike

我有以下查询:

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 就是这样),“avatars/Name-1...”出现在“avatars/Name-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 中“不可能”。

关于MySQL 正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com