【发布时间】:2015-09-01 09:31:39
【问题描述】:
我有以下数据的表格。
1
AAAAA01
AAAAA01
AAAAA01
B21
AAAAAA1
B3
AB100
我想按以下顺序对数据进行排序
AAAAAA1
AAAAA01
AAAAA01
AAAAA01
AB100
B21
B3
1
我写了一个语句,但没有给我正确的结果。
Select
*
from
dbo.Section
order by
CASE
WHEN not Section like '%[^0-9]%' THEN CONVERT(int,Section)
WHEN Section like '[0-9]%' THEN CONVERT(int,SUBSTRING(Section,1,PATINDEX('%[A-Z]%',Section)-900000))
END
为了您的帮助,我提供了表格脚本
INSERT [dbo].[Section] ([Section]) VALUES (N'1')
INSERT [dbo].[Section] ([Section]) VALUES (N'AAAAA01')
INSERT [dbo].[Section] ([Section]) VALUES (N'AAAAA01')
INSERT [dbo].[Section] ([Section]) VALUES (N'AAAAA01')
INSERT [dbo].[Section] ([Section]) VALUES (N'AAAAA01')
INSERT [dbo].[Section] ([Section]) VALUES (N'AAAAA01')
INSERT [dbo].[Section] ([Section]) VALUES (N'B21')
INSERT [dbo].[Section] ([Section]) VALUES (N'AAAAAA1')
INSERT [dbo].[Section] ([Section]) VALUES (N'B3')
INSERT [dbo].[Section] ([Section]) VALUES (N'AB100')
INSERT [dbo].[Section] ([Section]) VALUES (N'2')
INSERT [dbo].[Section] ([Section]) VALUES (N'B1')
INSERT [dbo].[Section] ([Section]) VALUES (N'B32')
INSERT [dbo].[Section] ([Section]) VALUES (N'11')
INSERT [dbo].[Section] ([Section]) VALUES (N'A10')
INSERT [dbo].[Section] ([Section]) VALUES (N'ABAAAA')
你能告诉我这如何为我提供正确的答案。
【问题讨论】:
-
你的表是
Section,列也叫Section? -
@lad2025 表名和列名都是section
-
你能用文字描述一下想要的排序吗?
-
@jarlh 想要对从 A 开始的内容进行排序并遍历所有 A。然后是 B ...Z
-
@jarlh 在此之后如果任何带有字符的数字 lijke All AAAAA 然后 AAAAAA1 ,然后在结束所有字符开始形式 1 之后的 AAAAA01 所以在我的示例中 1 在最后一个位置
标签: sql sql-server-2008 sql-server-2008-r2