Mysql 如何按数字、长度和长度对SQL进行排序;信?

Mysql 如何按数字、长度和长度对SQL进行排序;信?,mysql,sorting,Mysql,Sorting,如何对我的选择进行排序 示例列表 1, 2, 2A, 4, 10, 10A SQL $query = "SELECT * FROM table WHERE column1 = '$var' ORDER BY length(column2), column2"; 如果我像我的例子那样按长度排序(),2A将在底部结束。 如果我删除length(),则1后面会出现10 如何排序,使其显示如上所示?如下: $query = "SELECT * FROM table WHERE column1 = '

如何对我的
选择进行排序

示例列表

1, 2, 2A, 4, 10, 10A
SQL

$query = "SELECT * FROM table WHERE column1 = '$var' ORDER BY length(column2), column2";
如果我像我的例子那样按长度排序()
,2A将在底部结束。
如果我删除
length()
,则1后面会出现10

如何排序,使其显示如上所示?

如下:

$query = "SELECT * FROM table WHERE column1 = '$var' ORDER BY CAST(column2 as UNSIGNED), column2";
像这样:

$query = "SELECT * FROM table WHERE column1 = '$var' ORDER BY CAST(column2 as UNSIGNED), column2";

按十六进制排序是执行此操作的最佳方式:


$query=“SELECT*,将(十六进制(column2为无符号)转换为表中的l,其中column1='$var'按l排序”

按十六进制排序是最好的方法:


$query=“SELECT*,cast(十六进制(column2为无符号)为l,从表中,column1='$var'按l排序”

找到自定义函数,如
alphas
,您可以先按值的数字部分,然后按值的字符串部分排序

如果定义并填充这样的表:

CREATE TABLE test (t VARCHAR(255));
INSERT INTO test VALUES
  ('10A'),
  ('2'),
  ('2A'),
  ('4'),
  ('10'),
  ('1');
然后创建一个名为
alphas
的自定义函数,用于提取字符串部分(无数字):

然后,您可以执行如下顺序查询:

SELECT t FROM test ORDER BY CAST(t AS UNSIGNED), alphas(t);

CAST
函数将
10A
等字符串转换为
10

的无符号数。如果找到了
alphas
等自定义函数,则可以先按值的数字部分,再按值的字符串部分排序

如果定义并填充这样的表:

CREATE TABLE test (t VARCHAR(255));
INSERT INTO test VALUES
  ('10A'),
  ('2'),
  ('2A'),
  ('4'),
  ('10'),
  ('1');
然后创建一个名为
alphas
的自定义函数,用于提取字符串部分(无数字):

然后,您可以执行如下顺序查询:

SELECT t FROM test ORDER BY CAST(t AS UNSIGNED), alphas(t);

CAST
函数将
10A
之类的字符串转换为
10

的无符号数字。最大的问题是,你不知道这个数字有多长。最大的问题是,你不知道这个数字有多长。谢谢你!我很高兴我能帮上忙。像个符咒一样工作。谢谢你!我很高兴我能帮上忙。