Like в access
Like в access
На этом шаге рассмотрим использование обычного фильтра.
Режим фильтрации по выделенному используется в том случае, когда нужно отображать только те записи, которые удовлетворяют всем указанным, ограничениям (например, последняя буква «а» в имени И фамилии).
Если же необходимо отображать все записи, которые удовлетворяют хотя бы одному из указанных условий (например, последняя буква «а» в имени ИЛИ фамилии), то в этом случае следует использовать обычный фильтр, который можно установить командой Записи | Фильтр | Изменить фильтр (кнопка ).
В левом нижнем углу окна фильтрации имеются вкладки Найти и Или, при выборе которых в полях отображаются установленные ограничения. Например, после установки ограничений на имя и фамилию (последяя буква «а») на вкладке Найти в полях Фамилия и Имя будут установлены фильтры следующего вида: Like «*а» (рис. 1).
Рис. 1. Таблица Студенты. Изменение фильтра
Для задания каких-либо условий в Access используются несколько операторов сравнения (таблица 1), а также логические операторы (таблица 2).
В качестве примера применения операторов будут рассмотрены несколько условий (таблица 3). Необходимо отметить, что названия операторов принято писать либо прописными буквами ( LIKE ), либо начинать с прописной ( Like ).
Рис. 2. Таблица Студенты. Фильтрация по фамилии
После применения этого фильтра (кнопка ) в таблице Студенты будут отображены только те записи, у которых значение поля Фамилия начинается на букву, находящуюся в диапазоне от А до М (рис. 3).
Рис. 3. Таблица Студенты. Фильтрация по фамилии
Описанные выше действия можно увидеть здесь, а взять этот клип здесь.
Чтобы задать ограничения на несколько полей, при которых отображались бы все записи, удовлетворяющие хотя бы одному из указанных ограничений, можно воспользоваться вкладкой Или окна фильтра (рис. 1). Например, необходимо отобразить только тех студентов, у которых имя или фамилия закачиваются на букву «а». Для этого вначале необходимо на вкладке Найти окна фильтра указать для поля Фамилия условие LIKE «*а» (рис. 4).
Рис. 4. Таблица Студенты. Вкладка Найти окна фильтра
После этого следует выбрать вкладку Или и указать для поля Имя условие LIK Е «*а» (рис. 5).
Рис. 5. Таблица Студенты. Вкладка Или окна фильтра
Необходимо также отметить, что при выборе вкладки Или автоматически появляется следующая вкладка Или, т.е. можно указать несколько условий, хотя бы одно из которых должно выполняться.
После установки ограничений нужно применить фильтр к таблице (кнопка ), в результате чего будут отображены все записи, для которых выполняется хотя бы одно из указанных условий (рис. 6).
Рис. 6. Таблица Студенты. Фильтрация по фамилии
Если нужно удалить все установленные ограничения, то при открытом окне фильтра следует воспользоваться кнопкой Очистить бланк .
Описанные выше действия можно увидеть здесь, а взять этот клип здесь.
На следующем шаге вы узнаете о расширенном фильтре.
Предыдущий шаг Содержание
Следующий шаг
Операторы LIKE и NOT LIKE
Тема 3.2. Выборка данных с использованием предложения SELECT
Все SQL-выражения, предназначенные для выборки данных из существующих таблиц БД, начинаются с ключевого слова (оператора) SELECT (выбрать). Для уточнения запроса служат дополнительные операторы, такие как FROM (из), WHERE (где) и др.
Простейший синтаксис SELECT запроса:
В [ ] указаны операторы, которые могут отсутствовать в запросе. Данные операторы используются для уточнения запроса на выборку данных:
p WHERE (где) – указывает записи, которые должны войти в результирующую таблицу (фильтр записей);
p GROUP BY (группировать по) – группирует записи по значениям определенных столбцов;
p HAVING (имеющие, при условии) – указывает группы записей, которые должны войти в результирующую таблицу (фильтр групп);
p ORDER BY (сортировать по) – сортирует (упорядочивает) записи.
Операторы SELECT и FROM являются обязательными. Ключевое слово SELECT сообщает БД, что данное предложение является запросом на извлечение информации. После слова SELECT через «,» перечисляются наименования столбцов, содержание которых запрашивается. После слова FROM указывается список имен таблиц (через «,»), из которых извлекается информация.
Пример:
SELECT NAME, SURNAME
Приведенный запрос осуществляет выборку всех значений NAME и SURNAME из таблицы STUDENTS. Результатом является таблица, состоящая из 2-х столбцов.
Порядок следования столбцов этой таблицы соответствует порядку полей, указанному в запросе, а не их порядку в таблице STUDENTS.
Если необходимо получить все столбцы таблицы, то вместо списка столбцов достаточно указать символ (*).
Пример:
SELECT *
Сразу за оператором SELECT до списка столбцов можно применять ключевые слова ALL (все) и DISTINCT (отличающиеся), которые указывают, какие записи представлять в результирующей таблице. Если эти ключевые слова не используются, то подразумевается, что следует выбрать все записи (что также соответствует применению ключевого слова ALL). В случае использования DISTINCT в результирующей таблице представляются только уникальные записи. При этом если в исходной таблице находятся несколько идентичных записей, то из них выбирается только первая.
Пример:
SELECT DISTINCT CITY
Если в выражении FROM указано несколько таблиц, то в выражении SELECT имена столбцов должны содержать префиксы, указывающие, к какой именно таблице они относятся. Префикс отделяется от имени столбца точкой.
Пример:
Выражение STUDENTS.NAME означает столбец NAME из таблицы STUDENTS
Заголовки столбцов в результирующей таблице можно переопределить по своему усмотрению, назначив для них так называемые псевдонимы. Для этого в списке столбцов после соответствующего столбца следует написать выражение вида: AS заголовок-столбца
Пример:
SELECT NAME AS Имя, SURNAME AS Фамилия
Псевдонимы также можно задать и для каждой таблицы после ключевого слова FROM. Для этого достаточно указать псевдоним через пробел сразу после имени соответствующей таблицы. Псевдонимы таблиц, более короткие, чем их имена, удобно использовать в сложных запросах.
Пример:
SELECT T1.NAME , T1.SURNAME, T2.SUM_STIPEND
FROM STUDENTS T1, STIPEND T2;
Оператор WHERE
Условия поиска в операторе WHERE являются логическими выражениями, т.е. принимают одно из трех возможных значений: true, false и NULL (это происходит, когда в выражении некоторые элементы имеют значение NULL). Таким образом, в SQL мы имеем дело с трехзначной логикой.
При составлении логических выражений используются специальные ключевые слова и символы операций сравнения, которые называют предикатами:
Like в access
Господа, подскажите как правильно писать запрос
с использованием Like в Access?
Я пишу в соотв. со стандартом так
SELECT *
FROM CurrICSklad
WHERE sklad_number LIKE «FE%»;
Результат почему-то пустой, хотя в этой таблице
оченть много записей в поле sklad_number, которые
начинаются на «FE». Их-то мне и надо бы выбрать.
← →
Johnmen ( 2002-09-20 12:18 ) [1]
Запрос корректен. Значит дело не в нем, а в показе найденных.
← →
sniknik ( 2002-09-20 12:29 ) [2]
правильней так
LIKE UCase(«FE%»)
← →
sniknik ( 2002-09-20 12:57 ) [3]
глупость сморозил. пока не заметили
SELECT *
FROM CurrICSklad
WHERE UCase(sklad_number) LIKE «FE%»;
← →
KDS ( 2002-09-20 13:53 ) [4]
>sniknik ©
Там в таблице все буквы только большие.
Не в UCase(sklad_number) дело.
Тут наверное какие-то индивидуальные особенности Акцесса.
Может у него это по другому делается, отличительно от стандартов?
>Johnmen
Что Вы подразумеваете под показом?
Результат этого запроса — таблица без записей.
Т.е. таких вроде как и нет (хотя такие записи есть)
← →
Johnmen ( 2002-09-20 14:00 ) [5]
>KDS © (20.09.02 13:53)
>Результат этого запроса — таблица без записей.
>Т.е. таких вроде как и нет (хотя такие записи есть)
Что-то не уловил, какая такая таблица .
Под показом подразумеваю то, что как и где и с помощью чего это видно.
← →
sniknik ( 2002-09-20 14:00 ) [6]
а ты на чем думаеш я пробовал? таки на Аксесе, работает. может действительно в показе дело. попробуй еще вместо % — * так на всякий.
← →
roottim ( 2002-09-20 14:05 ) [7]
SELECT *
FROM CurrICSklad
WHERE sklad_number LIKE «F%»
а так возвращает..
поэксперементируй на других буквицах.. а то неясно.. это FE виновато или LIKE
← →
sniknik ( 2002-09-20 14:10 ) [8]
может Е русская в запросе или наоборот в базе. LIKE точно ни при чем вот пробовал
SELECT * FROM 1saccs WHERE UCase(schim) LIKE «%ОПЛ%»
Почему запрос LIKE в Access не возвращает никаких записей?
есть ли причина, почему
не возвращает никаких записей с OleDbAdapter.Fill(DataSet) или OleDbCommand.ExecuteReader() ?
когда я запускаю тот же SQL в MS Access напрямую, он возвращает ожидаемые записи. Кроме того, в том же коде, если я изменю SQL на
возвращаются все записи.
4 ответов
изменить * to % as % — это поиск подстановочных знаков при использовании OLE DB.
попробуйте изменить LIKE до ALIKE и ваши подстановочные знаки из * to % .
ядро базы данных Access (Jet, ACE, whatever) имеет два режимы запросов ANSI которые используют различные символы для LIKE :
режим запросов ANSI-89 использует *
режим запросов ANSI-92 использует %
OLE DB всегда использует режим запросов ANSI-92. DAO всегда использует режим запроса ANSI-89. Пользовательский интерфейс Access можно настроить на использование одного или другого.
Впрочем, при использовании ALIKE ключевое слово подстановочный знак-это всегда % независимо от режима запроса ANSI.
рассмотрим бизнес-правило, которое утверждает, что элемент данных должен состоять ровно из восьми числовых символов. Скажем, я реализовал правило следующим образом:
неизбежно, что я буду использовать % как подстановочный знак, потому что доступа CHAR тип данных и CHECK ограничения могут быть созданы только в режиме запроса ANSI-92.
однако кто-то может получить доступ к базе данных с помощью DAO, который всегда использует режим запроса ANS-89, и % символ будет считаться литералом, а не «специальным» символом, и может быть выполнен следующий код:
вставка будет успешной, и моя целостность данных будет снята : (
то же самое можно сказать с помощью LIKE и * в подтверждение Правило, созданное в режиме запроса ANSI-89, и тот, кто подключается с помощью ADO, который всегда использует режим запроса ANSI-92 и вставляет * персонаж где * персонаж не должен быть.
насколько я знаю, нет способа мандатировать, какой режим запроса ANSI используется для доступа к базе данных Access. Поэтому я думаю, что весь SQL должен быть закодирован, чтобы вести себя последовательно независимо от режима запроса ANSI, выбранного пользователем.
Примечание это не слишком сложно кодировать для оба используют LIKE С приведенным выше примером, например
. или действительно избегайте подстановочных знаков полностью, например
, используя ALIKE приведет к менее подробному коду, т. е. легче для человеческого читателя и, следовательно, легче поддерживать.
кроме того, когда приходит время порт для продукта SQL, который соответствует стандартам SQL, ALIKE порты тоже хорошо, т. е. преобразование ALIKE ключевое слово LIKE — это все, что требуется. При разборе данный предикат SQL, намного, намного проще найти один LIKE ключевое слово в чем это, чтобы найти все множество экземпляров * символ в текстовых литералах. Помните, что «портативный» не означает «код» как есть»»; скорее, это мера того, насколько легко это, чтобы переместить код между платформами (и имейте в виду, что перемещение между версиями одного и того же товара является портом например Jet 4.0 для ACE-это порт, потому что пользователей уровень безопасности перестает функционировать, DECIMAL значения сортировки по-другому и т. д.).
Операторы LIKE и NOT LIKE
Тема 3.2. Выборка данных с использованием предложения SELECT
Все SQL-выражения, предназначенные для выборки данных из существующих таблиц БД, начинаются с ключевого слова (оператора) SELECT (выбрать). Для уточнения запроса служат дополнительные операторы, такие как FROM (из), WHERE (где) и др.
Простейший синтаксис SELECT запроса:
В [ ] указаны операторы, которые могут отсутствовать в запросе. Данные операторы используются для уточнения запроса на выборку данных:
p WHERE (где) – указывает записи, которые должны войти в результирующую таблицу (фильтр записей);
p GROUP BY (группировать по) – группирует записи по значениям определенных столбцов;
p HAVING (имеющие, при условии) – указывает группы записей, которые должны войти в результирующую таблицу (фильтр групп);
p ORDER BY (сортировать по) – сортирует (упорядочивает) записи.
Операторы SELECT и FROM являются обязательными. Ключевое слово SELECT сообщает БД, что данное предложение является запросом на извлечение информации. После слова SELECT через «,» перечисляются наименования столбцов, содержание которых запрашивается. После слова FROM указывается список имен таблиц (через «,»), из которых извлекается информация.
Пример:
SELECT NAME, SURNAME
Приведенный запрос осуществляет выборку всех значений NAME и SURNAME из таблицы STUDENTS. Результатом является таблица, состоящая из 2-х столбцов.
Порядок следования столбцов этой таблицы соответствует порядку полей, указанному в запросе, а не их порядку в таблице STUDENTS.
Если необходимо получить все столбцы таблицы, то вместо списка столбцов достаточно указать символ (*).
Пример:
SELECT *
Сразу за оператором SELECT до списка столбцов можно применять ключевые слова ALL (все) и DISTINCT (отличающиеся), которые указывают, какие записи представлять в результирующей таблице. Если эти ключевые слова не используются, то подразумевается, что следует выбрать все записи (что также соответствует применению ключевого слова ALL). В случае использования DISTINCT в результирующей таблице представляются только уникальные записи. При этом если в исходной таблице находятся несколько идентичных записей, то из них выбирается только первая.
Пример:
SELECT DISTINCT CITY
Если в выражении FROM указано несколько таблиц, то в выражении SELECT имена столбцов должны содержать префиксы, указывающие, к какой именно таблице они относятся. Префикс отделяется от имени столбца точкой.
Пример:
Выражение STUDENTS.NAME означает столбец NAME из таблицы STUDENTS
Заголовки столбцов в результирующей таблице можно переопределить по своему усмотрению, назначив для них так называемые псевдонимы. Для этого в списке столбцов после соответствующего столбца следует написать выражение вида: AS заголовок-столбца
Пример:
SELECT NAME AS Имя, SURNAME AS Фамилия
Псевдонимы также можно задать и для каждой таблицы после ключевого слова FROM. Для этого достаточно указать псевдоним через пробел сразу после имени соответствующей таблицы. Псевдонимы таблиц, более короткие, чем их имена, удобно использовать в сложных запросах.
Пример:
SELECT T1.NAME , T1.SURNAME, T2.SUM_STIPEND
FROM STUDENTS T1, STIPEND T2;
Оператор WHERE
Условия поиска в операторе WHERE являются логическими выражениями, т.е. принимают одно из трех возможных значений: true, false и NULL (это происходит, когда в выражении некоторые элементы имеют значение NULL). Таким образом, в SQL мы имеем дело с трехзначной логикой.
При составлении логических выражений используются специальные ключевые слова и символы операций сравнения, которые называют предикатами: