我有一個表格,其文件名和版本顛覆由.
分隔的文件。訂購版本號爲
FNAME, VERSION
A 0.0.10
B 10.12.412
-- For example
create table file_versions as
select chr(mod(level,13)+65) as fname
, decode(mod(level,99),0, '0',
mod(level,10)||'.'||mod(level,500)||'.'||mod(level,14)
)
as version
from dual connect by level < 1001;
我想用版本命令文件,但使用的版本爲數字
select fname, version from file_versions
order by fname, version
FNAME, VERSION
A 0.0.10
A 0.0.6
...
我想不會去想顛覆級(可能有一個數(0)或更多(1.23.14123))。我應該如何按聲明書寫順序?
我可以寫類似:
select fname, version from file_versions
order by fname
, to_number(substr(version, 1, instr(version, '.',1,1)-1))
, to_number(substr(version, instr(version, '.',1,1)+1, instr(version, '.',1,2)-instr(version, '.',1,1)-1))
, to_number(substr(version, instr(version, '.',1,2)+1))
但它不是那麼好,如果一個數字被添加到版本字符串(例如0.0.0.123)將無法正常工作。有更好的解決方案嗎?
'\ d +(\ d {5})'中有奇怪的空格 –