在MySQL中对包含varchar中的整数和多点的数据进行排序

时间:2016-01-08 18:38:09

标签: mysql sorting varchar

在我的项目中,我将文档存储在MySQL DB中。表格包含标题编号(t_nm)和标题。我想按照标题号列出正确的顺序列表。由于存储在varchar中的数据“SELECT * FROM table ORDER by t_nm”无法正常工作。

什么是正确的查询?

t_nm(varchar) title(varchar)

+------+----------------------+
| t_nm | title                |
+------+----------------------+
| 0.1   | A.MANIVANNAN        |
| 1.0   | M.ELUMALAI          |
| 10.3  | SAMPATH.R           |
| 1.2   | S.PAULRAJ           |
| 1.2.1 | A.ASHOK KUMAR       |
| 2.1   | S.JAYAKUMAR         |
| 9.0   | S.CINRAS            |
| 10.1  | P.MURUGAN           |

我想按照正确的顺序对这些数据进行排序

+------+----------------------+
| t_nm | title                |
+------+----------------------+
| 0.1   | A.MANIVANNAN        |
| 1.0   | M.ELUMALAI          |
| 1.2   | S.PAULRAJ           |
| 1.2.1 | A.ASHOK KUMAR       |
| 2.1   | S.JAYAKUMAR         |
| 9.0   | S.CINRAS            |
| 10.1  | P.MURUGAN           |
| 10.3  | SAMPATH.R           |

1 个答案:

答案 0 :(得分:0)

我没有安装mySQL,所以我无法测试。 在排序之前测试将varchar转换为十进制。

它应该如下: SELECT * FROM table ORDER by CAST(t_nmAS DECIMAL(10,6));

更新#1

好的,然后用'在数组中将其爆炸。"作为整数的删除者

ex: SELECT * FROM表ORDER BY string_to_array(t_nmAS,'。'):: int [] ASC