我在我的SQL查询中使用或名称。
以下是我的表中的名称。SQL按查询顺序显示名称
rama1
rama2
rama10
rama3
rama11
我使用的查询按名称显示的名称为了
输出来像,
rama1
rama10
rama11
rama2
rama3
但我需要的输出应该是,
rama1
rama2
rama3
rama10
rama11
请帮助我查询以获得上述输出。
在此先感谢
我在我的SQL查询中使用或名称。
以下是我的表中的名称。SQL按查询顺序显示名称
rama1
rama2
rama10
rama3
rama11
我使用的查询按名称显示的名称为了
输出来像,
rama1
rama10
rama11
rama2
rama3
但我需要的输出应该是,
rama1
rama2
rama3
rama10
rama11
请帮助我查询以获得上述输出。
在此先感谢
我想你的表有错误的结构。您应该有一个单独的列,如数字数据类型的ID,您可以在其中保留rama数字部分。在这种情况下,您将能够在不开发自行车的情况下进行此类查询。
在你的情况下,你可以从你的字符串中获取数字部分(参见ms sql的How to get the numeric part from a string using T-SQL?)并按顺序排列。但这是错误的路要走。
请尝试:
select *
From tbl
order by CAST(SUBSTRING(col, PATINDEX('%[0-9]%', col+'0'), 10) as int)
试试这个
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
您使用的是什么RDBMS? – peterm
你是否在所有记录中都有“rama”字样?所有记录是否都以数字结尾,您必须按顺序? – Alex
@ voo..yes..ram在我的表格中的所有行中都有,并以数字 – bhai