【发布时间】:2017-05-28 10:46:51
【问题描述】:
如何对具有带有特殊字符的整数值的 varchar 列的表进行排序 我在数据库中有一个表,它有一个 varchar 类型的列,值就像 在这里我尝试了下面的mysql查询
SELECT * FROM table order by CONVERT(seq_no,signed integer) ASC
我在这里得到这样的结果。
1
2
3
4
5
6
6_1
6_2
6_1_1
6_1_2
7
8
8_1
8_2
8_1_1
8_1_2
8_2_1
8_2_2
但结果应该如下所示。
1
2
3
4
5
6
6_1
6_1_1
6_1_2
6_2
7
8
8_1
8_1_1
8_1_2
8_2
8_2_1
8_2_2
我也试过这个查询,但没有得到准确的结果。
SELECT * FROM table order by CONVERT(seq_no,signed integer) ASC,seq_no
【问题讨论】:
-
为什么不按 seqno 订购?
-
@Giorgi Nakeuri 我也尝试使用 sqno,如果我有超过 10 行 - 使用 order by seqno 结果将是这样的 1, 10, 11, 12, 2, 3, 4 , 5 , 6、6_1、6_1_1、6_1_2、6_2、7、8 8_1、8_1_1 8_1_2、8_2、8_2_1、8_2_2、9。但结果应该是 1, 2, 3, 4 , 5 , 6 , 6_1 , 6_1_1 , 6_1_2 ,6_2 , 7 , 8 8_1 , 8_1_1 8_1_2 ,8_2, 8_2_1, 8_2_2, 9, 10, 11, 12
-
是的,在这种情况下,常规订购将不起作用。你不觉得包含这个测试数据而不是你已经提供的数据更好吗?
-
这里是测试数据sqlfiddle.com/#!9/bf1647/1
-
你没有像 6_1_10 这样的数据吗?