我正在尝试使用VBA DAO.Recordset从Access过滤表。我希望匹配以下模式:\w{3}\d{5}
例如:ABC12345
如果我只在VBA代码中测试(在excel中)但是当我执行记录集时没有找到匹配项,这样可以正常工作。简写字符类\w
,\d
和乘数部分{3}
将被忽略
简单的查询,例如:select * from table where column like '*C123*'" or "'*[C123]*'
,工作正常。
我找到了一个解决方案,但它非常难看:
[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9]
答案 0 :(得分:1)
就像'xy'不是(posix)正则表达式一样,它是一个sql语句。 请参阅Access SQL:https://msdn.microsoft.com/en-us/library/bb208897(v=office.12).aspx 或者可能是T-SQL https://msdn.microsoft.com/de-de/library/ms179859(v=sql.120).aspx 但确切的可能性可能取决于连接的数据库,以及哪个引擎正在执行状态管理器。
以下查询可能有效。
select * from table
where customer like '[a-zA-Z][a-zA-Z][a-zA-Z][0-9][0-9][0-9][0-9][0-9]'
正则表达式在每个实现中都有很大的不同。