我正在尝试对包含字母、数字和引号的字段进行排序,但无法按顺序获得结果。表中的字段(命名为名称)具有如下数据,但未按所示排序:
6"w x 9"h
6"w x 10"h
7"w x 8"h
7"w x 9"h
7"w x 10"h
7"w x 21"h
10"w x 10"h
我正在使用的命令是
select name from my_table order by name;
结果是
10"w x 10"h
6"w x 10"h
6"w x 9"h
7"w x 10"h
7"w x 21"h
7"w x 8"h
7"w x 9"h
我已经尝试了在此站点上找到的所有以下内容。我根本无法让最后一个工作,但其他工作比上述工作好一点,但仍然不正确。
order by name * 1
order by name + 0
order by CAST(name AS DECIMAL(10,2))
order by length(name), name
order by CAST(SUBSTR(name, 0, LOCATE('w', name) - 1) AS int),
CAST(SUBSTR(name FROM (LOCATE('h', name) - 1)) AS int)
上面的前两个替代方案给出了这个输出,所以他们几乎正在这样做。
6"w x 9"h
6"w x 10"h
7"w x 10"h
7"w x 21"h
7"w x 9"h
7"w x 8"h
10"w x 10"h
有谁知道如何对这些进行排序,以便它们按正确的顺序排列,如下所示。
6"w x 9"h
6"w x 10"h
7"w x 8"h
7"w x 9"h
7"w x 10"h
7"w x 21"h
10"w x 10"h