[英]Sorting an alphanumeric column in SQL with mix of alphanumeric and alpha-only values
[英]sorting an alphanumeric column in sql
我有一个表“ MyTable”,其后为ID varchar(50)。
ID
----------
10
100
700-6 0110B512
700-6 0110B513
700-8 0110B512
700-9 0110B512
我需要对输出进行排序
ID
----------
10
100
700-6 0110B512
700-8 0110B512
700-9 0110B512
700-6 0110B513
请帮忙!!
我已经尝试过了,但是输出不是所期望的。
SELECT * FROM MyTable
ORDER BY
Case
When IsNumeric(ID) = 1 then LEFT(Replicate('0',101) + ID, 100)
When IsNumeric(ID) = 0 then RIGHT(Replicate('0',101) + ID, 100)
Else ID
END
ASC
DECLARE @t table(id varchar(50))
INSERT @t values ('10')
INSERT @t values('100')
INSERT @t values('700-6 0110B512')
INSERT @t values('700-6 0110B513')
INSERT @t values('700-8 0110B512')
INSERT @t values('700-9 0110B512')
SELECT *
FROM @t
ORDER BY cast(left(id, 3) as int), stuff(id, 1, 6, ''), substring(id, 5,1)
假设固定的前导/后跟整数,我认为这可能是最简单的:
SELECT *
FROM table1
ORDER BY LEFT(id,3) ,RIGHT(id,3) ,ID
如果需要,可以将任一部分转换为INT
,但不能从样本中清除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.