В синтаксисе SQL ядра СУБД Access для использования подстановочного знака %
ЛИБО вы должны использовать режим запросов ANSI-92 ИЛИ использовать ключевое слово ALIKE
вместо ключевого слова LIKE
.
Подробнее о режиме запросов ANSI-92 см. О режиме запросов ANSI SQL (MDB) в справке Access2003 (то же самое будет применяться к ACE в Access2007, но некоторые разделы из справки Access2007 были удалены. причина). Если вы делаете это в коде, вам нужно будет использовать OLE DB, например. ADO classic в VBA.
Для ключевого слова ALIKE
... вы не найдете много. Это одна из тех официально недокументированных функций, что означает, что существует элемент риска, что он может быть удален из будущей версии ядра базы данных Access. Лично я бы взял на себя этот риск из-за необходимости явного кодирования для режима запросов ANSI-89 и режима запросов ANSI-92, что необходимо для правил проверки и ограничений CHECK
(см. Пример ниже). Кодирование для обоих может быть выполнено, но оно более сложное и сложное, чтобы получить право, т. Е. Имеет более непосредственный риск, если вы ошибетесь.
Это ответ. Теперь о «решении» ...
Очевидно, что если вам нужно выполнить запрос такого типа для emp_id, то домен неверен, т. Е. Это не должно быть числовое поле.
Вылечить болезнь: измените схему, сделав ее текстовым полем, добавив правило домена, обеспечивающее, чтобы оно содержало только числовые символы, например,
CHECK (emp_id NOT LIKE '%[^0-9]%')
РЕДАКТИРОВАТЬ тег 'Jet' был добавлен. Приведенное выше ограничение CHECK
необходимо переписать, поскольку ядро базы данных Access имеет собственный синтаксис: замените символ ^
на !
. Кроме того, чтобы сделать его совместимым как с режимом запросов ANSI-89, так и с режимом запросов ANSI-92, используйте ключевое слово ALIKE, т.е.
CHECK (emp_id NOT ALIKE '%[!0-9]%')