Проблема с использованием шляпы в квадратных скобках [^] в шаблоне "like" TFDQuery - PullRequest
1 голос
/ 01 февраля 2020

У меня есть таблица MS Access 2016 и запускается TFDQuery в Delphi 10.3.

Значения поля1: aac, abc, acc, a c, azc, ac, azzc

Я выполняю запрос:

Select * from Table1 WHERE Field1 like 'a[^a-c]c'

В отношении регулярное выражение соответствует любому отдельному символу (только один символ) , я должен получить:

"a c, azc"

, но я получаю

"aac, abc, acc"

Пожалуйста, помогите исправить скрипт.

Ответы [ 2 ]

6 голосов
/ 01 февраля 2020

Чтобы сопоставить отрицательный набор символов с помощью оператора like в MS Access, вы должны использовать восклицательный знак согласно документации , например:

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

Ваш текущий код соответствует символам ^, a, b, c, окруженным символами a & c, что объясняет результаты, которые вы в настоящее время получаете.

По комментарии ниже @TLama, вам также нужно экранировать восклицательный знак , например:

select * from Table1 where Field1 like 'a[!!a-c]c'
1 голос
/ 02 февраля 2020

Правильный код:

Выберите * из Таблицы1, где Поле1 подобно 'a [!! ac] c'

...