我希望获得数据文件中存在的最高文件名。
查询:
select max(file_name) from dba_data_files where tablespace_name='XYZ'
;
以上查询仅检测数据文件是否来自 ABC [0-9]的.dbf。 查询没有显示文件abc10.dbf,即使它存在。 它显示了abc9.dbf。 有没有其他方法来获取数据文件的最高文件名?
分析了一段时间后。 我在查询中通过file_name发出命令。 这是输出。
/.../data01/odam1.dbf
/.../data01/odam10.dbf
/.../data01/odam2.dbf
....................
/../data01/odam9.dbf
也许max函数检测到最后一个文件名,这就是为什么odam9.dbf显示为输出而不是odam10.dbf。
答案 0 :(得分:0)
对于您显示的文件名,您可以按长度和名称订购:
select file_name
from dba_data_files
where tablespace_name = 'XYZ'
order by len(filename) desc, file_name desc
fetch first 1 row only;
注意:长度函数可能是length()
,具体取决于数据库。有些数据库将fetch first 1 row only
拼写为limit
甚至select top
。
此外,这是一个很大的假设,即文件名都具有相同的结构,只是末尾的数字不同(如问题中的示例所示)。