我有一个表,其中有 id's(varchar) 作为
-----------------------------------------
ID |NAME |COLUMN1 |COLUMN2 |
-----------------------------------------
11.10 |abcd |New col | new col |
11.10(a) |abcd |New col | New Col 2|
11.50 |abcd |New COl | New coli |
11.50(a1) |abcd |New col | New Col 2|
11.50(a2) |abcd |New col | New Col 2|
11.300(a) |abcd |New col | New Col 2|
11.200(a) |abcd |New col | New Col 2|
11.100(a) |abcd |New col | New Col 2|
11.40(a) |abcd |New col | New Col 2|
现在,如果我使用以下方法获取排序数据:
Select * from table order by length(id) asc,id;
我得到的结果是
11.10
11.50
11.10(a)
11.100(a)
11.200(a)
11.300(a)
11.40(a)
11.50(a)
11.50(a1)
但我想要所需的输出
11.10
11.10(a)
11.40(a)
11.50
11.50(a)
11.50(a2)
11.200(a)
11.300(a)
什么是相同的适当查询?我已经使用 CAST 尝试过,但我得到了所需的输出。
您想要的查询可能是这个:
select ID
from Table_
order by cast( SUBSTRING_INDEX(SUBSTRING_INDEX(id, '.',-1), '(', 1) as signed ),
SUBSTRING_INDEX(SUBSTRING_INDEX(id, '(',-1), ')', 1);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句