2010-09-03 55 views
0

在我的DB串選擇,我存儲各種版本號,如下所示:根據截至

OBJNAME 
Fix_6.0.0a.1 
Fix_6.0.0a.2 

我想沒有按照最後一個版本元素(最後.字符後面的數字對它們進行排序。 ?我如何寫這樣的SQL語句

我猜是這樣的:

SELECT SUBSTR(INSTR(OBJNAME, ".", -1)) as LAST_VERSION, OBJNAME 
    FROM MY_TABLE 
ORDER BY LAST_VERSION 

但是,什麼是確切的語法

回答

1

正確的版本是

select TO_NUMBER(SUBSTR(OBJNAME,INSTR(OBJNAME,'.',-1)+1,LENGTH(OBJNAME))) as LAST_VERSION, OBJNAME from MY_TABLE order by LAST_VERSION 
+0

技術上像'SUBSTR(OBJNAME,INSTR(OBJNAME, '' - 1)+ 1,線長(OBJNAME) - INSTR(OBJNAME, '' - 1))'會更加「美麗」 - 你提取了你需要的確切數量的符號:)或者,據我所知,你甚至可以省略'substr'的​​最後一個參數 - 它會在啓動符號後返回所有的東西然後。 – 2010-09-03 11:04:06

0

我不知道你正在使用哪個sql軟件,但你應該看看substr和instr參數。在你的情況下,你將3個參數傳遞給substr中的instr和1個參數。但substr通常需要更多。插入一些空白以獲得對語句的概述,尤其是對於substr ....作爲LAST_VERSION。那麼你會看到。錯誤的參數計數。