sql按查询顺序按顺序显示名称

时间:2013-07-04 06:40:17

标签: sql

我在sql查询中使用 oder by name 以下是我表中的名称。

rama1  
rama2  
rama10    
rama3  
rama11

我使用查询显示名称按名称排序
输出就像,

rama1  
rama10  
rama11  
rama2  
rama3

但我需要输出,

rama1  
rama2  
rama3  
rama10  
rama11  

请帮我查询以获得上述输出。

提前致谢

4 个答案:

答案 0 :(得分:3)

我想你的桌子结构错了。您应该有一个单独的列,例如numeric数据类型的ID,您可以在其中保留rama数字部分。在这种情况下,您可以在不开发自行车的情况下进行此类查询。

在您的情况下,您可以从字符串中获取数字部分(请参阅How to get the numeric part from a string using T-SQL?获取ms sql)并按顺序排序。但这是错误的方式。

答案 1 :(得分:2)

试试这个

SELECT col FROM Table1
ORDER BY 
CASE WHEN PatIndex('%[0-9]%',col) > 0
      THEN RIGHT(col,LEN(col)- (PatIndex('%[0-9]%',col)-1)) * 1
      ELSE col END   

DEMO

答案 2 :(得分:1)

查询:

SELECT t1.*
FROM Table1 t1
ORDER BY CAST(REPLACE(t1.col, 'rama', '') AS UNSIGNED) ASC

结果:

|    COL |
----------
|  rama1 |
|  rama2 |
|  rama3 |
| rama10 |
| rama11 |

答案 3 :(得分:1)

请尝试:

select *
From tbl
order by CAST(SUBSTRING(col, PATINDEX('%[0-9]%', col+'0'), 10) as int)