mysql - 为什么在 MySQL 中排序时 reg 表达式匹配不起作用?
问题描述
这个问题可以认为与此有关。如果我有同一张桌子:
ID | 姓名 | 分数 |
---|---|---|
1 | 阿什利 | 81 |
2 | 萨曼莎 | 75 |
3 | 贝尔维特 | 84 |
4 | 朱莉娅 | 76 |
我想对最后三个字符进行排序,那么为什么这个查询不起作用:
SELECT DISTINCT Name FROM students
where Marks > 75
ORDER BY Name regexp "[a-z]{3}$" ASC;
排序时正则表达式有效吗?当我运行此查询时,我没有收到任何错误,但也没有排序。我得到的是:
解决方案
所有值都与模式匹配。
with students (id, name, marks) as( select 1, 'Ashley', 81 from dual union all select 2, 'Samantha', 75 from dual union all select 3, 'Belvet', 84 from dual union all select 4, 'Julia' , 76 from dual) SELECT *, Name regexp "[a-z]{3}$" AS ordering_expression FROM students ORDER BY Name regexp "[a-z]{3}$" ASC;
编号 | 姓名 | 标记| 排序表达式 -: | :------- | ----: | ------------------: 1 | 阿什利 | 81 | 1 2 | 萨曼莎 | 75 | 1 3 | 贝尔维特 | 84 | 1 4 | 朱莉娅 | 76 | 1
所以行没有排序。
-- test 6-letter pattern with students (id, name, marks) as( select 1, 'Ashley', 81 from dual union all select 2, 'Samantha', 75 from dual union all select 3, 'Belvet', 84 from dual union all select 4, 'Julia' , 76 from dual) SELECT *, Name regexp "[a-z]{6}$" AS ordering_expression FROM students ORDER BY Name regexp "[a-z]{6}$" ASC;
编号 | 姓名 | 标记| 排序表达式 -: | :------- | ----: | ------------------: 4 | 朱莉娅 | 76 | 0 1 | 阿什利 | 81 | 1 2 | 萨曼莎 | 75 | 1 3 | 贝尔维特 | 84 | 1
db<>在这里摆弄
'Ashley' 应该排在第一位,因为 'ley' < 'lia'。– shiv_90
with students (id, name, marks) as( select 1, 'Ashley', 81 from dual union all select 2, 'Samantha', 75 from dual union all select 3, 'Belvet', 84 from dual union all select 4, 'Julia' , 76 from dual) SELECT * FROM students ORDER BY RIGHT(Name, 3) ASC;
编号 | 姓名 | 分数 -: | :------- | ----: 1 | 阿什利 | 81 4 | 朱莉娅 | 76 2 | 萨曼莎 | 75 3 | 贝尔维特 | 84
db<>在这里摆弄
推荐阅读
- javascript - 使用 Javascript 从 Cutt.ly api 代码中提取短 url
- r - 绘制没有直方图的密度线
- webhooks - 来自 webhook 的 Google Assistant 响应无效:无法将 JSON 转换为 ExecuteHttpResponse
- javascript - Textarea 编辑器不工作,但 textarea 自己工作
- javascript - 如何将现有按钮的功能分配给新按钮?
- php - PHP将$stmt的值与整数进行比较
- javascript - 节点 js SyntaxError:意外的令牌“导出”
- java - 如何收集使用一种方法的接收器变量作为参数的方法名称
- coq - Coq:在两个等效的 setoid 之间重写
- excel - 如何将一些预设工作表中的信息复制到一个概览页面中?