You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:17:46