我在使用 Access 关键字
LIKE
及其使用时遇到了麻烦。我想在查询表单中使用以下 RegEx(正则表达式)作为一种“验证规则”,其中 LIKE
运算符过滤我的结果:
"^[0]{1}[0-9]{8,9}$"
如何实现这一点?
我知道你不是在问 VBA,但也许你会给它一个机会
如果您打开 VBA 项目,插入新模块,然后选择 Tools -> References 并添加对 Microsoft VBScript Regular Expressions 5.5 的引用。鉴于此,将以下代码粘贴到新插入的模块中。
Function my_regexp(ByRef sIn As String, ByVal mypattern As String) As String
Dim r As New RegExp
Dim colMatches As MatchCollection
With r
.Pattern = mypattern
.IgnoreCase = True
.Global = False
.MultiLine = False
Set colMatches = .Execute(sIn)
End With
If colMatches.Count > 0 Then
my_regexp = colMatches(0).Value
Else
my_regexp = ""
End If
End Function
现在您可以在 SQL 查询中使用上面的函数。所以你的问题现在可以通过调用来解决
SELECT my_regexp(some_variable, "^[0]{1}[0-9]{8,9}$") FROM some_table
如果没有匹配到,它将返回空字符串。
希望你喜欢它。
我认为 Access 不允许正则表达式匹配(VBA 除外,但这不是您要问的)。
LIKE
运算符甚至不支持交替。
因此需要将其拆分为两个表达式。
... WHERE (Blah LIKE "0#########") OR (Blah LIKE "0########")
(
#
在 Access 中表示“单个数字”)。