按varchar字母顺序对数据进行排序

古塔姆

我有下面的数据表。

 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') 

您能告诉我如何为我提供正确答案。

斯蒂芬·诺维科夫(Stepan Novikov)

请试试:

Select    
    *
from
    dbo.Section
order by
    REPLACE
    (REPLACE
    (REPLACE
    (REPLACE
    (REPLACE
    (REPLACE
    (REPLACE
    (REPLACE
    (REPLACE
    (REPLACE ([Section], '0', 'ZZ0'),
    '1', 'ZZ1'),
    '2', 'ZZ2'),
    '3', 'ZZ3'),
    '4', 'ZZ4'),
    '5', 'ZZ5'),
    '6', 'ZZ6'),
    '7', 'ZZ7'),
    '8', 'ZZ8'),
    '9', 'ZZ9'),
    [Section]

Sqlfiddle

选择新测试数据的结果: 在此处输入图片说明

请检查是否正确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按用户定义的顺序对数据帧进行排序(例如,非字母顺序)

如何按字母顺序按索引值对数据框的列进行排序

按字母顺序对数据表进行字母排序,然后按R中的数字值排序

按这些数据帧的名称的字母顺序对数据帧列表进行排序

我无法使用neDB数据库按字母顺序对数据进行排序

如何通过删除名称开头的数字按字母顺序对数据进行排序

验证并格式化JSON,而无需使用'jsonlint'按字母顺序对数据进行排序

使用 Django 中的标题按字母顺序对数据库进行排序

MySQL-按字母顺序对数字进行排序

根据搜索输入按字母顺序对数组进行排序

按字母顺序对数组进行排序:Coffeescript

用数字按字母顺序对数组进行排序

Numpy Python:按字母顺序对数组的列进行排序

使用sort方法按字母顺序对数组进行排序

Javascript按日期和字母顺序对数组进行排序

按字母顺序对数组列表进行排序

无法按字母顺序对数组进行排序

按字母顺序对数组排序

PHP:按字母顺序对数组排序

快速按字母顺序对数组排序

Swift:按字母顺序对数组排序

如何按字母顺序对数组排序?

如何按字母顺序对数组排序?

按给定列表中的ID顺序对数据进行排序

按特定值顺序对数据表进行排序

在R中按特定顺序对数据进行排序

如何按数字顺序对数据路径进行排序?

如何在C ++中从对数字进行排序到按字母顺序进行排序

按字母顺序对Pandas数据框中的数据进行排序