asp.net - 对 Access 数据库中带有字母后缀的数字进行排序

标签 asp.net sql regex database ms-access

我正在尝试使用 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/

相关文章:

c# - ASP .NET MVC 中的结果过滤器和响应过滤器有什么区别?

网站

javascript - 站点加载时显示弹出窗口一次

mysql - order by position 子句如何在 mysql 中工作

php - 基于 MySQL 的搜索未显示完整结果

jquery - if 语句 - 仅接受字母的字段

asp.net - 防火墙背后的应用洞察

sql - 使用月份和年份查找范围数据

javascript - 在 Angular2 上使用正则表达式制作管道

regex - 如何匹配直到命中某个字符?