如何用VBA正则表达式在SQL中匹配以-""开头的富文本字段记录
在SQL中结合VBA正则匹配特定格式记录
需求
查找notes表中field1字段(富文本格式,可移除格式)内以-"(连字符加双引号)开头的记录,需通过VBA正则表达式实现。
关键背景
field1中的双引号以HTML实体"形式存储,可通过PLAINTEXT()函数将其还原为原始双引号字符。
尝试过程
- 测试匹配含单引号的字段时,以下SQL语句执行成功:
SELECT * FROM notes WHERE RegexMatch(field1, ".*'.*") ;
- 尝试匹配双引号时,使用双引号转义的SQL语句执行失败:
SELECT * FROM notes WHERE RegexMatch(field1, ".*""".*") ;
可用的VBA正则匹配函数
' ----------------------------------------------------------------------' ' 若字符串匹配正则模式则返回True ' ' ----------------------------------------------------------------------' Public Function RegexMatch(value As Variant, pattern As String) As Boolean If IsNull(value) Then Exit Function ' 使用静态对象避免重复创建正则实例 ' Static regex As Object ' 初始化正则对象 ' If regex Is Nothing Then Set regex = CreateObject("vbscript.regexp") With regex .Global = True .IgnoreCase = True .Multiline = True End With End If ' 若模式变更则更新正则表达式 ' If regex.pattern <> pattern Then regex.pattern = pattern ' 测试字符串是否匹配模式 ' RegexMatch = regex.Test(value) End Function
最终可行方案
先用PLAINTEXT()函数处理field1还原原始字符,再执行正则匹配,SQL语句如下:
SELECT * FROM notes WHERE RegexMatch(PLAINTEXT(notes.field1), "-""") ;
内容的提问来源于stack exchange,提问作者r0berts
相关产品推荐
相关产品推荐

