2

我正在尝试使用OleDbConnection. 我正在尝试按包含一组字符串格式的数字的列对结果进行排序。

我希望结果按自然顺序排列(例如 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. 所以我被困住了。想法将不胜感激。

4

1 回答 1

3

无法在从 Access 会话外部运行的查询中使用正则表达式。如果查询在 Access 会话中运行,它可以使用带有RegExp. 但是对于这种情况,正则表达式方法似乎有点过头了。你可以简单地得到你需要的东西Val()

Val 函数将从字符串中的数字返回一个数字。当它碰到一个字母时它将停止读取字符串。

这是立即窗口中的一个示例。

? Val("2A")
 2 

像这样在查询中使用它...

SELECT Drawing, Sheet
FROM TableName
ORDER BY Val(Sheet), Sheet;
于 2013-09-26T19:00:02.360 回答