我有下面的表链,除了第一个值外,它按升序排列,
Strand
3.1.1
3.1.1.1
3.1.1.2
3.1.2
3.1.2.1
3.1.2.2
3.10 # this should have been at the top most
3.2.1
3.2.1.1
...
...
3.20 #Similarly,this should have been above 3.2.1 and below 3.1.2.2
该列在varchar中,我认为将3.10转换为3.1并将3.20转换为3.2可以解决问题,即仅将varchar转换为十进制(1,1)用于这些值,但是我没有得到如何将其转换或强制转换为列内的特定字段...我不想转换整个列..我不会得到答案...
最佳答案
您可以包括order by
长度。
ORDER BY
LEFT(strand,1),
RIGHT(LEFT(strand,3),1),
CASE WHEN RIGHT(LEFT(strand,4),1) <> '.' and RIGHT(LEFT(strand,4),1) <> '' THEN 1 ELSE 2 END
这样,较短的字符串将首先出现
关于mysql - 是CAST还是CONVERT还是自定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42919029/