[英]How to sort sql server result based on first smallest to largest, Numeric followed by Alpha
[英]SQl Server : sort alphanumeric first followed by Numeric
SELECT dbo.base_project.id as ID,
dbo.base_project.name as Name,
dbo.base_project.status
FROM dbo.base_project
ORDER BY
Case When IsNumeric(dbo.base_project.name) = 1
then Right(Replicate('0',21) + dbo.base_project.name, 20)
When IsNumeric(dbo.base_project.name) = 0
then Left(dbo.base_project.name + Replicate('',21), 20)
Else dbo.base_project.name End
我能夠按數字排序然后字母數字。我需要反向排序,我需要首先排序字母數字然后數字
例:
1, 3, 13036, 101-2011-009X2, 20-100281-01, ELO-001, ELO001B, ELO002B
您可以使用子查詢來完成此操作。 子查詢將數字與非數字分開,並為它們提供計算字段,以便可以按主查詢的順序使用它們。
SELECT
A.ID
, A.Name
, A.status
FROM
(
SELECT
dbo.base_project.id as ID
, dbo.base_project.name as Name
, dbo.base_project.status
, 1 as ordering
, RIGHT(REPLICATE('0',21) + dbo.base_project.name, 20) As padded
FROM dbo.base_project
WHERE ISNUMERIC(dbo.base_project.name) = 1
UNION
SELECT
dbo.base_project.id as ID
, dbo.base_project.name as Name
, dbo.base_project.status
, 0 as ordering
, LEFT(dbo.base_project.name + REPLICATE('',21), 20) As padded
FROM dbo.base_project
WHERE ISNUMERIC(dbo.base_project.name) <> 1
) A
ORDER BY A.ordering, A.padded
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.