Sql Server 列中的数据有的是字母,有的是数字,要求先数字,后字母排序。
如题:表table有一列aa列中有数据:123458970abcfe要求排序成012345789abcefsql语句该怎么组合...
如题:表 table 有一列 a
a列中有数据:1 2 3 4 5 8 9 7 0 a b c f e
要求排序成 0 1 2 3 4 5 7 8 9 a b c e f
sql 语句该怎么组合 展开
a列中有数据:1 2 3 4 5 8 9 7 0 a b c f e
要求排序成 0 1 2 3 4 5 7 8 9 a b c e f
sql 语句该怎么组合 展开
1个回答
展开全部
如果数字都是小于10的,可以直接order by,按照字符规则排序就是你想要的这个。
如果数字有两位以上的,这时候11会排在2的前面,如果想数字按照数字的规则排序,字母按照字母的规则排序,需要根据条件将数字和字母分别查询出来进行排序,然后使用union all联接出结果。
WITH tbtemp AS (
SELECT '0' AS num
UNION ALL
SELECT '12'
UNION ALL
SELECT '1'
UNION ALL
SELECT '3'
UNION ALL
SELECT '22'
UNION ALL
SELECT '5'
UNION ALL
SELECT 'c'
UNION ALL
SELECT 'b'
)
--转换的数字类型根据自己需要修改
--top数目大于可能出现的数目即可
SELECT * FROM (
SELECT TOP 10000000 * FROM tbtemp WHERE ISNUMERIC(num) >0
ORDER BY CONVERT(DECIMAL(9,2),num))a
UNION ALL
SELECT * FROM(
SELECT TOP 10000000 * FROM tbtemp WHERE ISNUMERIC(num)=0
ORDER BY num)b
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询