1
我要排序该列包含数字和字母数字值的值。SQL混合数字和字母数字值的排序
但我得到了错误的排序(order by
)任何人都可以帮我解决这个问题吗?
我使用SQL Server 2008 R2的,这里的样本:
DECLARE @TableTester TABLE (TESTER VARCHAR(50));
INSERT @TableTester VALUES
('1'),
('2'),
('3'),
('4'),
('10'),
('20'),
('5 ; 6'),
('122'),
('256 ; 78'),
('U1 ; U2'),
('U3 ; 7'),
('C1'),
('U4'),
('WC23'),
('WC214 ; U4'),
('U10');
SELECT Tester FROM @TableTester
ORDER BY CASE WHEN PATINDEX('%[0-9]%', Tester) > 0 THEN 0 ELSE 1 END,
CASE WHEN PATINDEX('%[0-9]%', Tester) > 0
THEN LEFT(Tester, PATINDEX('%[0-9]%', Tester)-1) ELSE Tester END
OUTPUT:
1
2
3
4
10
20
5 ; 6
122
256 ; 78
C1
U4
U10
U1 ; U2
U3 ; 7
WC23
WC214 ; U4
期望的结果:
1
2
3
4
5 ; 6
10
20
122
256 ; 78
C1
U1 ; U2
U3 ; 7
U4
U10
WC23
WC214 ; U4
可能的重复[SQL Server 2008 - 按数字字符串排序](http://stackoverflow.com/questions/20240313/sql-server-2008-order-by-strings-with-number-numerically) – hatchet
此外,如果重复问题的答案很难遵循,那么有:http://www.essentialsql.com/use-sql-server-to-sort-alphanumeric-values/ – hatchet
@hatchet,但我有多个在我的列中分隔分号的值“;” – itsMacyAnn