首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft office Access `LIKE`与`RegEx`

Microsoft office Access `LIKE`与`RegEx`
EN

Stack Overflow用户
提问于 2011-04-04 21:26:40
回答 2查看 29.2K关注 0票数 11

我在访问关键术语LIKE和它的用法方面遇到了麻烦。我想在查询表单中使用以下RegEx (正则表达式)作为一种“验证规则”,其中LIKE操作符会过滤我的结果:

代码语言:javascript
复制
"^[0]{1}[0-9]{8,9}$"

如何才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-04 21:42:46

我不认为Access允许正则表达式匹配(除了在VBA中,但这不是您想要的)。LIKE运算符甚至不支持交替。

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

代码语言:javascript
复制
... WHERE (Blah LIKE "0#########") OR (Blah LIKE "0########")

(#在Access中的意思是“一位数”)。

票数 10
EN

Stack Overflow用户

发布于 2011-04-04 21:54:21

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

如果您打开一个VBA项目,请插入新模块,然后选择Tools -> References并添加对 5.5的引用。鉴于此,请将下面的代码添加到新插入的模块。

代码语言:javascript
复制
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查询中使用上面的函数。因此,您的问题现在可以通过调用

代码语言:javascript
复制
SELECT my_regexp(some_variable, "^[0]{1}[0-9]{8,9}$") FROM some_table

如果没有匹配,则返回空字符串。

希望你喜欢。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5539141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档