我正在尝试使用 OleDbConnection
从 Access 数据库检索一些信息。我正在尝试按包含一组字符串格式的数字的列对结果进行排序。
我希望结果按自然顺序排列(例如 1、2、10、20 与 1、10、2、20),因此我将感兴趣列中的数据转换为整数并对结果进行排序。
"SELECT Drawing, Sheet FROM TableName ORDER BY CINT(Sheet) ASC"
这工作得很好,除了在某些情况下表数据具有带有字母后缀的值(例如 1A、2B 等...)。对于这些情况,上面的命令显然失败了。
我希望结果按如下方式排序:1、2、2A、2B、3、3A 等等...
那么,该怎么做呢?我见过一些使用 REGEXP 和一些条件语句的示例,但显然 MS SQL 不支持 REGEXP。所以我被困住了。想法将不胜感激。
最佳答案
无法在从 Access session 外部运行的查询中使用正则表达式。如果查询在 Access session 内运行,则它可以使用带有 RegExp
的自定义 VBA 函数。但无论如何,正则表达式方法对于这种情况似乎有点过分了。您只需使用 Val()
即可获得所需的内容。
Val Function将从字符串中的数字返回一个数字。当它遇到字母时,它将停止读取字符串。
这是“立即”窗口中的示例。
? Val("2A")
2
像这样在查询中使用它......
SELECT Drawing, Sheet
FROM TableName
ORDER BY Val(Sheet), Sheet;
关于asp.net - 对 Access 数据库中带有字母后缀的数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19036097/