Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中将varchar字段排序为整数_Mysql - Fatal编程技术网

在mysql中将varchar字段排序为整数

在mysql中将varchar字段排序为整数,mysql,Mysql,我有一个表,它有三个字段:Id、Name、Sequence。 在序列列中有以下条目:1、2、3、4、2a、5、2b、2c、3、4a行 现在我想要一个mysql查询,它可以对这些值进行如下排序: 1、2、2a、2b、2c、3、4、4a、5 我试过以下的问题 从表中选择*按顺序命名为无符号ASC。 但它不起作用。您想先按整数排序,然后按数字后的子字符串排序,只需按整个字符串作为子排序: SELECT * FROM table_name ORDER BY CAST(sequence AS UNSIGN

我有一个表,它有三个字段:Id、Name、Sequence。 在序列列中有以下条目:1、2、3、4、2a、5、2b、2c、3、4a行

现在我想要一个mysql查询,它可以对这些值进行如下排序:

1、2、2a、2b、2c、3、4、4a、5

我试过以下的问题

从表中选择*按顺序命名为无符号ASC。
但它不起作用。

您想先按整数排序,然后按数字后的子字符串排序,只需按整个字符串作为子排序:

SELECT * FROM table_name ORDER BY CAST(sequence AS UNSIGNED), sequence;

下面是一个例子。我省略了ASC,因为这是默认值。

您不需要任何东西,只需要按顺序从表中选择*即可asc@senape这将把10放在2之前,因为字段是varchar而不是numeric。@潜伏者你是对的,我没有考虑它。事实上,我使用castsequence作为无符号进行了测试,结果正如预期的一样。@senape castsequence作为无符号本身也不起作用。例如,它不包含第2部分、第2a部分、第2b部分。如果你的列表有2b,2,2a,那么它会保留那个顺序。@senape,不,它没有。看见3b在3之前出现,但它不应该出现。@virendrapratapsing太好了!如果您能通过单击旁边的复选标记接受此答案,我将不胜感激。