简体   繁体   English

sql用多个小数对varchar进行数字排序

[英]sql sorting varchar numerically with multiple decimals

I have a varchar column containing我有一个 varchar 列,其中包含

0.1
0.8
0.2
Drr
0.11
0.8.1
0.8.2
0.2.1

How do I sort it to get results like this please?我该如何排序以获得这样的结果?

0.1
0.2
0.2.1
0.8
0.8.1
0.8.2
0.11
Drr

Thanks谢谢

you may try this:你可以试试这个:

WITH isContainAlpha AS
(
    SELECT  *,
            CASE WHEN version_no LIKE '%[a-z]%' THEN 1 ELSE 0 END AS withAlpha,
            CASE WHEN version_no LIKE '%[a-z]%' THEN '0' ELSE version_no END AS version_no_rewrite
    FROM tableOne
)
SELECT version_no
FROM isContainAlpha
ORDER BY withAlpha, CAST('/'+REPLACE(version_no_rewrite,'.','/')+'/' as hierarchyID)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM