MySQL select order by contains num

标签 mysql sql

这是我的 table :

--------------
    Names
--------------
   "Ben 52"
   "Dan 236"
   "Carter 73"
   "Harry"
   "Peter 53"
   "Connor 27"
   "Morgan"
   "Richard 675"

我想创建一个查询,将没有数字的列放在列表的末尾。这基本上就是我要创建的想法:

SELECT names FROM table1 ORDER BY ContainsNum(names) DESC

这是我应该得到的结果:

--------------
    Names
--------------
   "Ben 52"
   "Dan 236"
   "Carter 73"
   "Peter 53"
   "Connor 27"
   "Richard 675"
   "Harry"
   "Morgan"

如果我不够清楚,请发表评论。 我以前没有看到有人问过这个问题。

谢谢!

最佳答案

只需使用order by。大多数数据库都支持某种形式的正则表达式,如下所示:

order by (case when names regexp '.*[0-9].*' then 0 else 1 end),
         names

确切的语法因数据库而异。

注意:它仅适用于 names regexp '[0-9]'。我添加了通配符,因为我认为它使模式更直观。

关于MySQL select order by contains num,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31812573/

相关文章:

mysql - 使用MySQL,如何计算Left Join记录的MEDIAN?

mysql - 为什么 LEFT JOIN 会破坏我的 MySQL 查询?

php - Jquery 填充选择列表

php - 在MySql中动态创建数据库并设置权限

sql - 获取存储过程结果中的行数,无论列数/类型如何

mysql - 如何获取每组中的最大值和最小值以及它们的时间?

mysql - 在 select 语句中替换/赋值

sql - 如何查找记录的行号?

php - 我可以从一个基于多个其他表的表中获取数据吗?

php - 使用从 MySQL 接收的数据填充 Highcharts 图表