mysql - 正确排序 CONCAT 值 MYSQL

标签 mysql sorting concatenation

执行简单的 col1/col2 计算,然后使用 CONCAT 添加文字 % 符号后,我无法成功按顺序对它们进行排序。

最初我的排序结果DESC就像

9%
8%
75%
65%
100%

更新后:

   CASE WHEN ROUND(col1/col2 *100) = 100 
        THEN CONCAT(100, '%') 
        ELSE LPAD(CONCAT(ROUND(col1/col2 *100),'%'),3,'0') 
        END AS Percent

通过在个位数前面添加 0,我能够成功对个位数和两位数列进行排序,但 100 不合适

75%
65%
09%
08%
100%

想法?

最佳答案

似乎您已经将 % 符号添加到值中,因此您可以检索它们,而不使用 % 符号,然后对它们进行排序并添加回 % 符号。下面是正在运行并经过测试的 SQL 示例。

select concat(percentage, '%') -- add '%' sign
from (
select SUBSTRING_INDEX(percentage, '%', 1) percentage  -- remove `%`
from percentage_sorting) t
order by percentage;  -- order by values

关于mysql - 正确排序 CONCAT 值 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24516166/

相关文章:

java - 按日期对路径排序 - 实用方法

c# - 按文件名的内容对文件进行排序

c - 在没有字符串库函数或数组表示法的情况下在 C 中使用 concat

SQL - 使用 Group By 时以逗号分隔数据

python - 在 Tensorflow 中将张量与 None 轴连接

mysql - 将备份表中的列行插入到新表中

php - 如何处理无限重复的日期

java - 将数组从最高到最低排序

mysql - 通过大量 SQL 调用来加速缓慢的函数

mysql - 有没有办法将 sha256 转换为 md5 哈希