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