У меня есть таблица MS Access 2016 и работает TFDQuery в Delphi 10.3.

Значения поля 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"

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

1
Rati2019 1 Фев 2020 в 15:19

2 ответа

Лучший ответ

Чтобы сопоставить отрицательный набор символов с помощью оператора 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'
6
Lee Mac 2 Фев 2020 в 15:56

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

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

1
Rati2019 2 Фев 2020 в 15:53