按SQL Server列排序

时间:2014-07-11 15:24:33

标签: sql sql-server-2008 sql-order-by

我有一个SQL Server列,其中包含以下值:

PPPX-31
CDGH-3
CDHUI-2
DFGTT-20
CUIT-18
AXDDX-32

如何根据给定列的行中的最后一位数来订购?

问候 普拉萨德

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT * FROM MyTable
ORDER BY RIGHT(MyColumn, 1)

表示最后一个字符或:

SELECT * FROM MyTable
ORDER BY REVERSE(MyColumn)

按反向字符串排序。

答案 1 :(得分:0)

假设-为数字后,字符串和字符串中只有一个-

SELECT *
FROM myTable
ORDER BY SUBSTRING(YourCol, CHARINDEX('-',YourCol) + 1, LEN(YourCol))

如果您需要数字排序,请将convert()字符串加入INT

SELECT *
FROM myTable
ORDER BY CONVERT(INT, 
             SUBSTRING(YourCol, CHARINDEX('-',YourCol) + 1, LEN(YourCol)))

<强> SQL Fiddle Demo

结果(数字排序):

|  YOURCOL |
|----------|
|  CDHUI-2 |
|   CDGH-3 |
|  CUIT-18 |
| DFGTT-20 |
|  PPPX-31 |
| AXDDX-32 |

答案 2 :(得分:0)

由于行包含使用以下查询解决的多个连字符

SELECT * FROM MyTable 按CONCON的顺序(INT,RIGHT(MyColumn,CHARINDEX(&#39; - &#39;,REVERSE(MyColumn)+&#39; - &#39;) - 1))