Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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按字符串排序为数字(较大的数字高于较小的数字)_Mysql_Innodb - Fatal编程技术网

MySQL按字符串排序为数字(较大的数字高于较小的数字)

MySQL按字符串排序为数字(较大的数字高于较小的数字),mysql,innodb,Mysql,Innodb,考虑以下结果,其中code类型为VARCHAR: SELECT code FROM lock ORDER BY CAST(code AS signed) > 0 DESC, `code |code| |4 | |420 | |5 | |T6 | |X30 | 如何更改查询,使其按以下顺序返回结果: |code| |4 | |5 | |420 | |T6 | |X30 | 例如: 第一个订单将把数字排在前面。第二个顺序将只对数字进行升序排序,而第一个顺序将保

考虑以下结果,其中
code
类型为
VARCHAR

SELECT code
FROM lock
ORDER BY CAST(code AS signed) > 0 DESC, `code

|code|
|4   |  
|420 |
|5   |
|T6  |
|X30 |
如何更改查询,使其按以下顺序返回结果:

|code|
|4   |  
|5   |
|420 |
|T6  |
|X30 |
例如:

第一个订单将把数字排在前面。第二个顺序将只对数字进行升序排序,而第一个顺序将保持数字在开头。第三个将只对字符串进行升序排序,数字将保持顺序,因为它们已经排序。

LENGTH()
函数用于获取字符串的长度:

SELECT code
FROM lock
ORDER BY LENGTH(code), code
OUT:

+------+
| code |
+------+
| 4    |
| 5    |
| T6   |
| 420  |
| X30  |
+------+

注意:我曾在我意外创建的另一个帐户上发布过一个类似的问题(请求删除),请注意此问题与代码ASC的代码>0订单锁的代码略有不同
SELECT CAST(代码为已签名的代码)
@rockerbo这将删除
T6
X30
(但数字的顺序是否正确)在问题的示例中,
T6
420
短,是否在
420
之后?编辑:示例查询结果很抱歉,此答案是错误的,这不是用户想要的。
SELECT code
FROM lock
ORDER BY LENGTH(code), code
+------+
| code |
+------+
| 4    |
| 5    |
| T6   |
| 420  |
| X30  |
+------+