【发布时间】:2019-03-28 19:39:38
【问题描述】:
我有 qt_no 值,例如
AM1,M3,M4,M14,M30,M40,MA01,A10,A13,A07,B01,B10,Z33,Z13
等(实际上是字母后的任何 int 2-3 位数字)。
我尝试过排序为
order by length(qt_no), qt_no
它没有达到我要求的输出。
我的预期输出是
A01,A07,A10,A13,B01,AM1,M3,M4,M14,M30,M40,MA01,Z13,Z33
记住这些 qt_no 值属于同一个字段和同一个表的不同行。
从这里开始我不知道该怎么做。
任何帮助将不胜感激。
编辑
这是play with 的示例数据库。
【问题讨论】:
-
gt_no 列有什么类型?
-
varchar(10),但我研究了一些,意识到,我需要自然排序顺序
-
请创建一个 SQL Fiddle 或 DB Fiddle 并将其添加到问题中,供其他人使用。
-
您可以使用此答案中创建的函数:stackoverflow.com/a/37269038/2469308 并从字符串中获取数字,从字符串中获取非数字部分。
-
检查这个小提琴:db-fiddle.com/f/e5bEtYDzMqqvNRCs3qN6iD/1 它对你有用吗?