微软办公室访问`LIKE` VS`RegEx`

Tam*_*mir 11 regex ms-access sql-like

我一直在使用Access密钥术语LIKE和它的使用.我想在查询表单中使用以下RegEx(正则表达式)作为一种"验证规则",其中LIKE运算符过滤我的结果:

"^[0]{1}[0-9]{8,9}$"
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

MPę*_*ski 25

我知道你不是在询问VBA,但也许你会给它一个机会

如果您打开VBA项目,插入新模块,然后选择工具 - >引用并添加对Microsoft VBScript正则表达式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
Run Code Online (Sandbox Code Playgroud)

现在,您可以在SQL查询中使用上述函数.所以你的问题现在可以通过调用来解决

SELECT my_regexp(some_variable, "^[0]{1}[0-9]{8,9}$") FROM some_table
Run Code Online (Sandbox Code Playgroud)

if如果没有匹配则返回空字符串.

希望你喜欢它.


Tim*_*ker 10

我不认为Access允许正则表达式匹配(除了在VBA中,但这不是你要求的).该LIKE运营商甚至不支持交替.

因此,您需要将其拆分为两个表达式.

... WHERE (Blah LIKE "0#########") OR (Blah LIKE "0########")
Run Code Online (Sandbox Code Playgroud)

(#表示Access中的"单个数字").