查找双引号字符

问题描述 投票:0回答:1

我需要在 SQL 中使用 VBA 正则表达式查找表

field1
中“长文本”
notes
包含以 -”(连字符和双引号)开头的行的记录。(
field1
使用富文本格式(表和表单字段)。如有必要,我可以删除它,但在我的上下文中,富文本很有用)。

双引号存储为其 html 实体

"
可以通过
PLAINTEXT()
函数恢复

enter image description here

为了让事情变得更容易,我首先尝试匹配包含任何引号字符的字段。
我可以找到包含单引号的字段。

SELECT *
FROM notes
WHERE RegexMatch(field1, ".*'.*")
;

但是双引号失败了

SELECT *
FROM notes
WHERE RegexMatch(field1, ".*"".*")
;

我尝试用另一个引号来转义引号字符。
我还粘贴了我的

RegexMatch()
函数,以防相关。

' ----------------------------------------------------------------------'
' Return True if the given string value matches the given Regex pattern '
' ----------------------------------------------------------------------'
Public Function RegexMatch(value As Variant, pattern As String) As Boolean
    If IsNull(value) Then Exit Function
    ' Using a static, we avoid re-creating the same regex object for every call '
    Static regex As Object
    ' Initialise the Regex object '
    If regex Is Nothing Then
        Set regex = CreateObject("vbscript.regexp")
        With regex
            .Global = True
            .IgnoreCase = True
            .Multiline = True
        End With
    End If
    ' Update the regex pattern if it has changed since last time we were called '
    If regex.pattern <> pattern Then regex.pattern = pattern
    ' Test the value against the pattern '
    RegexMatch = regex.Test(value)
End Function

查询现在可以使用:

SELECT *
FROM notes
WHERE RegexMatch(PLAINTEXT(notes.field1), "-""")
;
sql regex vba ms-access
1个回答
2
投票

如果列使用富文本格式,则

"
在内部存储为
&quot;

对该列的任何查询都将使用 HTML 源文本,而不是格式化的 HTML。

您可以通过基于表格创建一个表单来查看源文本,并为具有 TextBox.TextFormat = 纯文本的字段添加一个文本框。


Erik A 在评论中提出了非常好的观点:

您可以使用PlainText函数查询富文本的纯文本表示。

然后就可以用这个来查询双引号了:

WHERE PlainText(fld) LIKE "*""*"

WHERE PlainText(fld) LIKE '*"*'
© www.soinside.com 2019 - 2024. All rights reserved.