2016-10-12 73 views
-2

我在我的分贝的字符串是这样的:SQL命令字符串,数字递增

DE-1016-860 
DE-1016-1078 
DE-1016-1166 

我如何ORDER BY order_numbersSELECT像这样这样的元素:

DE-1016-1166 
DE-1016-1078 
DE-1016-860 

感谢您对帮助我这个。

我的解决方案是在这个问题之后!

+0

是固定的字符串格式吗? –

+0

@vkp当然是,类型是varchar(255) – ItsOdi

+0

@ItsOdi,我的答案在下面有帮助吗? –

回答

0

这里假设你的前缀始终是相同的,从而TO_NUMBER的最后一个字符:

SELECT str 
    FROM (SELECT 'DE-1016-860' str FROM DUAL 
      UNION ALL 
      SELECT 'DE-1016-1078' str FROM DUAL 
      UNION ALL 
      SELECT 'DE-1016-1166' str FROM DUAL) 
ORDER BY TO_NUMBER (SUBSTR (str, 9, 4)) DESC 

希望这有助于!

+0

感谢这个快速答案的人:)我会尝试当我回家! – Johnny97

+0

罗伯托它不工作:/ – ItsOdi

+0

我不知道订单号码,只有前8个字符是相同的 – ItsOdi

0

如果您的格式始终是AA - #### - 。。 那么您可以尝试使用LEFT(),RIGHT()和SUBSTRING()。

例:ORDER BY LEFT(order_number,2), SUBSTRING(order_number,4,4) DESC, SUBSTRING(order_number, 9,4) DESC

希望这有助于!

0

找到了解决办法:

ORDER BY SUBSTR(order_number FROM 1 FOR 8), CAST(SUBSTR(order_number FROM 8) AS UNSIGNED) 

首先我给他们的端点起始点值1和8:

12345678 
DE-1016- 

你可以看到八个字符。第二我从第八个数字进行演员,它工作正常。它给我我的数字,从最高到最低排序。