Mysql 我如何按除10以外的一列数字进行排序
例如,使用以下查询Mysql 我如何按除10以外的一列数字进行排序,mysql,Mysql,例如,使用以下查询 按指标ASC从明细表顺序中选择指标; 下表 +-----------+ | indicator | +-----------+ | a | | 4 | | b | | 2 | | 1 | | 8 | | s | | 11 | | k | | e | +-----------+ +-----------+ |指示器| +
按指标ASC从明细表顺序中选择指标;
下表
+-----------+
| indicator |
+-----------+
| a |
| 4 |
| b |
| 2 |
| 1 |
| 8 |
| s |
| 11 |
| k |
| e |
+-----------+
+-----------+
|指示器|
+-----------+
|a|
| 4 |
|b|
| 2 |
| 1 |
| 8 |
||
| 11 |
|k|
|e|
+-----------+
我按字母顺序排列
+-----------+
| indicator |
+-----------+
| 1 |
| 11 |
| 2 |
| 4 |
| 8 |
| a |
| b |
| e |
| k |
| s |
+-----------+
+-----------+
|指示器|
+-----------+
| 1 |
| 11 |
| 2 |
| 4 |
| 8 |
|a|
|b|
|e|
|k|
||
+-----------+
我真正想要的是这个
+-----------+
| indicator |
+-----------+
| 1 |
| 2 |
| 4 |
| 8 |
| a |
| b |
| e |
| k |
| s |
| 11 |
+-----------+
+-----------+
|指示器|
+-----------+
| 1 |
| 2 |
| 4 |
| 8 |
|a|
|b|
|e|
|k|
||
| 11 |
+-----------+
编辑:数字以36为基数mysql将数字存储为文本,因此需要将值转换为数字,以便mysql能够将其排序为数字 在mysql中,该函数可用于在基数之间转换数字。将数字转换为以10为基数,并将其解释为数字(conv()返回结果的字符串表示形式):
警告:mysql将无法使用索引来加速排序操作。如果你有大量的记录,考虑存储十进制数或者有一个计算的列来计算。 < P>你的数字被MySQL存储为文本,因此你需要将这些值转换成数字以便MySQL能够将其排序为数字。 在mysql中,该函数可用于在基数之间转换数字。将数字转换为以10为基数,并将其解释为数字(conv()返回结果的字符串表示形式):
警告:mysql将无法使用索引来加速排序操作。如果你有大量的记录,考虑存储十进制数或者有一个计算的列来为你计算。 你可以先按长度排序,然后按实际内容排序。不需要转换
您可以先按长度排序,然后按实际内容排序。不需要转换
因为对计算机来说,这不是十六进制,也不是任何数字。它只是文本。为什么要将数字存储为文本?什么时候
K
和S
成为十六进制数字表示法的一部分?你打算如何确定数字的基数?十六进制数字中没有k或s。对不起,我已经调整了问题,数字实际上是基数36@Havenard指示符字段必须简短/易于键入(1233对Y9),因为对于计算机来说,这不是十六进制或任何数字。它只是文本。为什么要将数字存储为文本?什么时候K
和S
成为十六进制数字表示法的一部分?你打算如何确定数字的基数?十六进制数字中没有k或s。对不起,我已经调整了问题,数字实际上是基数36@Havenard指示器字段必须简短/易于键入(1233与Y9)
SELECT indicator FROM schedules ORDER BY CONV(indicator, 36, 10) + 0 ASC;
SELECT indicator
FROM schedules
ORDER BY length(indicator),
indicator ASC;