【发布时间】:2013-05-29 00:21:47
【问题描述】:
这是我的问题:
我正在尝试运行一堆使用如下命名系统的 SQL 文件:
1-createtable.sql
2-modifytable.sql
.....
10-createanothertable.sql
等等。
问题是,我用来获取文件的代码使用文件名作为字符串对它们进行排序,这导致文件被排序如下:
10-createanothertable.sql
1-createtable.sql
2-modifytable.sql
我需要它们按“-”之前的数值运行。
我已阅读并知道这称为自然排序,但希望在前进的道路上有某种方向。
【问题讨论】:
-
显示您的代码。顺便说一句:这个(非常常见的)问题的答案几乎总是改变你的命名约定来填充数字(例如 01 而不是 1。
-
更改脚本上的命名系统是否容易,或者这不是一个选项?即
000001-scriptname.sql,000002-scriptname.sql, to 999999-scriptname.sql -
您可以使用this answer 中的LogicalComparer 以“自然”排序顺序进行排序。