按最后2个字符的顺序排序

9ed*_*dge 7 mysql sql select sql-order-by

这是我的查询的结果,但它没有正确排序.我想按最后2个字符排序.结果应该是:Fa0/10下面Fa0/9.

Fa0/1
Fa0/10
Fa0/11
Fa0/12
Fa0/2
Fa0/3
Fa0/4
Fa0/5
Fa0/6
Fa0/7
Fa0/8
Fa0/9
Gi0/1
Gi0/2
Null0
Vlan1
Run Code Online (Sandbox Code Playgroud)

我的查询:

SELECT inft.port FROM interfaces AS intf ORDER BY RIGHT(intf.port + 0, 2)
Run Code Online (Sandbox Code Playgroud)

第二:sqlfiddle

Sah*_*hah 7

试试这个:

SELECT port 
FROM interfaces 
ORDER BY SUBSTRING_INDEX(port, '/', 1), CAST(SUBSTRING_INDEX(port, '/', -1) AS SIGNED)
Run Code Online (Sandbox Code Playgroud)

检查SQL FIDDLE DEMO

OUTPUT

|   PORT |
|--------|
|  Fa0/1 |
|  Fa0/2 |
|  Fa0/3 |
|  Fa0/4 |
|  Fa0/5 |
|  Fa0/6 |
|  Fa0/7 |
|  Fa0/8 |
|  Fa0/9 |
| Fa0/10 |
| Fa0/11 |
| Fa0/12 |
|  Gi0/1 |
|  Gi0/2 |
|  Null0 |
|  Vlan1 |
Run Code Online (Sandbox Code Playgroud)


Vis*_*har 6

你为什么需要+ 0?只需将其移除即可.

SELECT port FROM interfaces ORDER BY RIGHT(port, 2)
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示

输出:

PORT
------------
Fa0/1
Gi0/1
Gi0/2
Fa0/2
Fa0/3
Fa0/4
Fa0/5
Fa0/6
Fa0/7
Fa0/8
Fa0/9
Fa0/10
Fa0/11
Fa0/12
Null0
Vlan1
Run Code Online (Sandbox Code Playgroud)