首页 > 解决方案 > 在 TFDQuery“like”模式中使用方括号 [^] 中的帽子时出现问题

问题描述

我有 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'

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

"a c, azc"

但我得到

"aac, abc, acc"

请帮助更正脚本。

标签: sqldelphims-access-2016

解决方案


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

select * from Table1 where Field1 like 'a[!a-c]c'

您当前的代码匹配字符^, a, b,被字符&c包围,因此解释了您当前收到的结果。ac

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

select * from Table1 where Field1 like 'a[!!a-c]c'

推荐阅读