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;