CAST OR CONVERT还是自定义?

时间:2017-03-21 05:26:21

标签: mysql sql casting sql-convert

我有下面的表格,按照升序排序,除了第一个值

 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),但我还没有得到如何转换或转换为列内的特定字段...我不想要整个列...我不会得到答案然后...

2 个答案:

答案 0 :(得分:0)

您可以加入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

有了这个,首先会出现较短的字符串

答案 1 :(得分:0)

试试这个

select * from @t1
ORDER BY 
CASE WHEN strand like '%0%' then convert(varchar,CONVERT(float,strand)) ELSE strand END

enter image description here