我有一个表格,其文件名和版本颠覆由.
分隔的文件。订购版本号为
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})'中有奇怪的空格 –