在MySQL中对VARCHAR字段进行排序

时间:2019-02-14 17:56:20

标签: mysql

我有一个只有一列的MySQL表。该表中有超过1600万行。该表包含所有用括号括起来的RGB颜色值。例如, (100,155,255)。但是,它们未分类。如何排序,使第一行为(0,0,0),第二行为(0,0,1)等,最后一行为(255,255,255)?我尝试了ORDER BY CAST,但似乎不起作用。

1 个答案:

答案 0 :(得分:0)

您可以尝试对子字符串使用强制转换

SELECT your_column
from your_table 
order by CAST(replace( SUBSTRING_INDEX(SUBSTRING_INDEX( your_column, ',', 1), ',', -1) , '(','') AS UNSIGNED) 
   , CAST(SUBSTRING_INDEX(SUBSTRING_INDEX( your_column, ',', 2), ',', -1) AS UNSIGNED) 
   , CAST(replace(SUBSTRING_INDEX(SUBSTRING_INDEX( your_column, ',', 3), ',', -1), ')','') AS UNSIGNED)