在 TFDQuery“like”模式中使用方括号 [^] 中的帽子的问题

Rat*_*019 1 sql delphi ms-access-2016

我有 MS Access 2016 表并在 Delphi 10.3 中运行 TFDQuery。

Field1 值是:aac, abc, acc, a c, azc, ac,azzc

我运行查询:

Select * from Table1 WHERE Field1 like 'a[^a-c]c'
Run Code Online (Sandbox Code Playgroud)

提到正则表达式匹配任何单个字符(仅一个字符),我应该得到:

"a c, azc"
Run Code Online (Sandbox Code Playgroud)

但我得到

"aac, abc, acc"
Run Code Online (Sandbox Code Playgroud)

请帮助更正脚本。

Lee*_*Mac 6

要使用likeMS Access 中的运算符匹配负字符集,您应该根据文档使用感叹号,例如:

select * from Table1 where Field1 like 'a[!a-c]c'
Run Code Online (Sandbox Code Playgroud)

您当前的代码相匹配的字符^abc包围的人物ac,因此目前解释您收到的结果。

根据@TLama 下面的评论,您还需要转义感叹号,例如:

select * from Table1 where Field1 like 'a[!!a-c]c'
Run Code Online (Sandbox Code Playgroud)

  • @Rati,请参阅[特殊字符处理](http://docwiki.embarcadero.com/RADStudio/Rio/en/Preprocessing_Command_Text_(FireDAC)#Special_Character_Processing)主题。 (2认同)