我一直在访问关键术语LIKE
和它的使用问题。我想用在查询表格下面的正则表达式(正则表达式)作为一种“verfication规则”的其中LIKE
运营商过滤我的结果:Microsoft office Access`LIKE` VS`RegEx`
"^[0]{1}[0-9]{8,9}$"
这又如何实现呢?
我一直在访问关键术语LIKE
和它的使用问题。我想用在查询表格下面的正则表达式(正则表达式)作为一种“verfication规则”的其中LIKE
运营商过滤我的结果:Microsoft office Access`LIKE` VS`RegEx`
"^[0]{1}[0-9]{8,9}$"
这又如何实现呢?
我不认为Access允许正则表达式匹配(VBA除外,但这不是你要求的)。 LIKE
运营商甚至不支持交替。
因此,您需要将其分成两个表达式。
... WHERE (Blah LIKE "0#########") OR (Blah LIKE "0########")
(#
意味着Access中的“单个数字”)。
我知道你不是问的VBA,但也许你就会给它一个机会
如果打开VBA项目,插入新的模块,然后选择工具 - >引用并添加引用到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
如果没有任何内容匹配会返回空字符串。
希望你喜欢它。
感谢您抽出宝贵时间!它效果很好。 – PhilNicholas 2014-04-18 08:20:08
你好,我有这个方法的一个小问题,它也为NULL字段返回true。不是一个大问题,我可以解决这个问题,但我很好奇为什么会发生这种情况。 – Cornel 2016-06-23 21:23:33
RegEx不会在Access/Jet/ACE中的SQL中高效使用。它没有内置到数据库引擎中,所以它不会使用索引。它也不是VBA的一部分,但如果你真的想使用文件系统对象的RegEx,也可以。但对于验证规则(我不知道任何其他可能意味着“变体规则”),您根本不能使用RegEx。但是,可以使用您用于编辑的控件的BeforeUpdate事件,然后使用File System Object中的RegEx函数来测试控件的Text属性中的值,并相应地执行操作。 – 2011-04-07 03:48:00