RP10,RP11,RP12,RP121,RP101,RP122,RP13,VP14 VP16 sqlserver 查询结果怎么按照数字排序成 RP10 RP11 RP12 RP13 RP101 RP121 RP 122 VP13 VP14 SQL语句怎么写
时间: 2024-09-24 17:09:33 浏览: 33
SQL查询结果想要按照字符串开头的数字顺序排列,可以使用`ORDER BY`子句,并结合`LIKE`操作符来匹配这些特定模式。假设你的列名叫做`Column`,你可以使用以下SQL语句:
```sql
SELECT *
FROM YourTable
ORDER BY Column LIKE 'RP%'
```
这将首先按名称以"RP"开始的行排序,如"RP10", "RP11", 等等。
对于包含多个部分的数字,例如"RP101", "RP121", 可以先处理这些情况。一种可能的方法是创建一个新的列,提取出数字部分,然后再进行排序:
```sql
WITH CTE AS (
SELECT
Column,
CAST(SUBSTRING(Column, CHARINDEX('RP', Column) + 2, LEN(Column)) AS INT) AS Number
FROM
YourTable
)
SELECT *
FROM
CTE
ORDER BY
Number
```
这里,我们首先找出"RP"的位置,然后从那个位置提取并转换为整数进行排序。如果还有其他版本的序列,如"VP14"、"VP16",同样可以用类似的方式添加到这个查询中:
```sql
WITH CTE AS (
SELECT
Column,
CASE
WHEN Column LIKE 'RP%' THEN CAST(SUBSTRING(Column, CHARINDEX('RP', Column) + 2, LEN(Column)) AS INT)
WHEN Column LIKE 'VP%' THEN CAST(SUBSTRING(Column, CHARINDEX('VP', Column) + 2, LEN(Column)) AS INT)
END AS Number
FROM
YourTable
)
SELECT *
FROM
CTE
ORDER BY
Number
```
阅读全文