Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФОРМАТИРОВАНИЕ СВОДНОЙ ТАБЛИЦЫ.docx
Скачиваний:
8
Добавлен:
12.04.2015
Размер:
188.49 Кб
Скачать

Применение булевых операторов

В SQL распознаются и позволяют расширить задание условий выборки основные булевы операторы.

Результатом выражения, состоящего из булевых операторов может быть истинна (TRUE) или ложь (FALSE) результат. Булевы операторы могут объединять одно или более истинных или лож­ных значений и в качестве результата получить единственно вер­ное или неверное значение.

Стандартными булевыми операторами, распознаваемыми в SQL, являются:

  • AND (И) - для двух логических выражений (A AND В) оценива­ет, истинны ли они оба одновременно;

  • OR (ИЛИ) - для двух логических выражений (A AND В) оцени­вает, истинно ли хотя бы одно из них;

  • NOT (НЕ) - заменяет логическое значение одиночного аргу­мента (NOT А) на противоположное: с истинного на ложное или наоборот.

Например, требуется составить такой запрос, где необходимо отобразить всю информацию о студентах, проживающих в Мос­ковской области и изучающих английский язык. Для записи тако­го условия нужно использовать оператор AND, который будет объединять два критерия отбора: по области и по языку.

Команда, реализующая такой запрос, будет выглядеть сле­дующим образом:

SELECT *

FROM tbIStudents

WHERE fRegion = 'Московская' AND fLanguage = 'англ';

Если в этом примере заменить оператор AND на OR, то в ре­зультате будут выведены данные о студентах, которые прожива­ют в Московской области или же могут проживать в других об­ластях, но при этом изучают английский язык:

SELECT *

FROM tbIStudents

WHERE fRegion = 'Московская' OR fLanguage = 'англ';

Для иллюстрации работы параметра отрицания NOT можно составить запрос, в котором требуется отобразить данные о всех студентах, проживающих не в Московской области. Команда за­проса будет выглядеть следующим образом:

SELECT *

FROM tbIStudents;

WHERE NOT fRegiion = 'Московская';

При задании параметра отрицания требуется, чтобы он пред­шествовал булевому оператору, значение которого следует изме­нить, а не был размещен перед реляционным оператором. На­пример, неправильной будет запись:

WHERE fRegion NOT = 'Московская';

В предложении WHERE можно совмещать несколько булевых операторов, если требуется выполнить сразу несколько ограни­чений по выборке. При этом порядок выполнения логических операторов таков:

  1. NOT;

  2. AND;

  3. OR.

Например, нужно отобразить данные о студентах, проживаю­щих вне Московской области, даты рождения которых находятся между 01.01.1987 и 31.12.1987 (т.е. родившихся в 1987 году). За­прос будет иметь такой вид:

SELECT *

FROM tbIStudents

WHERE NOT fRegion = 'Московская' AND (fBirthday > =

'01.01.1987' AND fBirthday <= '31.12.1987');

ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ КЛЮЧЕВЫХ СЛОВ

Помимо перечисленных выше предложений в конструкции SELECT могут использоваться дополнительные специальные клю­чевые слова IN, BETWEEN, LIKE и IS NULL. Далее рассмотрены правила использования каждого из них отдельно и совместно с предложениями SELECT.

Ключевое слово in позволяет выбрать из запроса только те значения, которые совпадают со значениями из заданного поль­зователем списка, и имеет следующий синтаксис:

WHERE column_name [NOT] IN (list)

где: column_name - имя столбца, для которого задается усло­вие выборки в виде списка значений;

list - список значений, определяющих диапазон выборки.

Элементы списка IN должны быть заключены в скобки и раз­делены запятыми, а если они имеют символьный тип или тип да­ты, то записаны в одинарных кавычках.

Ключевое слово IN можно также представить как замену не­скольких OR. Например, требуется получить данные о студентах, проживающих в Московской, Петербуржской и Белгородской областях. Для этого можно было бы составить следующий за­прос:

SELECT *

FROM tbIStudents

WHERE fRegion = 'Московская' OR fRegion = 'Петербуржская'

OR fRegion = 'Белгородская';

Аналогичный запрос можно составить с использованием клю­чевого слова IN:

SELECT *

FROM tbIStudents

WHERE fRegion IN ('Московская', 'Петербуржская', 'Белгородская');

Применение ключевого слова IN позволяет значительно со­кратить запись условия запроса, особенно если в списке много вставляющих.

Вместе с IN можно использовать и отрицание NOT. В этом :лучае их сочетание будет иметь вид: NOT IN ( ).

Так, если предыдущий пример переписать с отрицанием, то (апрос будет отображать студентов, не проживающих в перечис- тенных областях:

SELECT *

FROM tbIStudents

WHERE fRegion NOT IN (' Московская ', ' Петербуржская ',1 Белгородская ');

Несмотря на то что IN существенно оптимизирует условие выборки, не всегда удобно указывать множество подряд идущих шачений списка. Именно в такой ситуации удобней использовать слючевое слово BETWEEN, определяющее не список, а диапазон жачений, для которых задается выборка.

Синтаксис оператора следующий:

WHERE column_name [NOT] BETWEEN min_value AND max_value

где: min_value - минимальное значение диапазона; max_value - максимальное значение диапазона.

При этом необходимо учитывать, что минимальное и макси­мальное значения будут включены в границы диапазона.

Так, если необходимо сделать выборку по товарам (из табли­цы tbIGoods), которые имеют цены в диапазоне от 1000 до 2000 грн. включительно, то можно составить следующий запрос:

SELECT fNameGoods AS "Товар", fModelGoods AS "Модель", fPriceGoods AS "Цена"

FROM tbIGoods

WHERE fPriceGoods BETWEEN 1000 AND 2000;

В качестве диапазона значений могут выступать данные не только числового типа, но и текстового или типа даты. Например, необходимо отобразить данные о студентах, фамилии которых начинаются с литеры, находящейся в диапазоне от «А» до «Д». Для этого необходимо построить следующий запрос:

SELECT *

FROM tbIStudents

WHERE fLastName BETWEEN ’A' AND 'E';

Чтобы все фамилии, начинающиеся на «Д», попали в выборку, нужно указать в качестве верхней границы диапазона букву «Е». При этом в выборку попала бы и фамилия «Е», если бы она при­сутствовала в таблице tbIStudents, но практически это маловеро­ятно.

Ключевое слово BETWEEN также может использоваться с клю­чевым словом NOT - NOT BETWEEN. В этом случае в результат запроса будут отобраны те данные, которые расположены вне диапазона, указываемого в условии выборки NOT BETWEEN.

Например, для отображения информации о студентах, родив­шихся не в июле 1987 года, можно выполнить такую команду запроса:

SELECT *

FROM tbIStudents

WHERE fBirthday NOT BETWEEN '01.07.1987' AND '31.07.1987';

Рассмотренные выше ключевые слова IN и BETWEEN, при по­мощи которых задаются критерии выборки данных, оперировали с полным описанием текстовой информации. Но не вполне по­нятно, что делать, если требуется найти данные по неполной ин­формации о них, только по части строки. Например, может пона­добиться найти всех студентов, фамилия которых начинается на «Иван» (Иванов, Иванченко и т.д.).

•Для таких задач применяется ключевое слово LIKE, которое проверяет, совпадает ли содержащаяся в поле строка с условием поиска. В качестве условия используются группы символов, ко­торые могут соответствовать искомым данным, и символы под­становки.

Синтаксис LIKE следующий:

WHERE column_name [NOT] LIKE 'mask'

где mask - налагаемая на данные маска поиска.

В маске могут быть использованы символы подстановки:

  • знак вопроса (?) - обозначает любой одиночный символ;

  • знак диез (# ) - обозначает любое одиночное число;

  • символ звездочка ( * ) - обозначает последовательность сим­волов (включая символы нуля);

  • [a-z] - обозначает символы в определенном интервале;

  • [!a-z] - символы кроме определенного интервала.

Например, найдем всех студентов, фамилия которых начина­ется на «Иван»:

SELECT *

FROM tbIStudents

WHERE fLastName LIKE 'Иван*';

Рассмотрим еще один пример. Пусть требуется найти студен­тов, проживающих в г. Москве. Название города содержится в столбце fCity и предваряется символами «г.». Поэтому в маске поиска будем использовать символ * перед названием:

SELECT *

FROM tbIStudents WHERE fCity LIKE '«Москва';

Может возникнуть вопрос, что делать, если нужно найти сам знак вопроса (?) или знак звездочки ( * ), которые уже различают­ся системой как символы подстановки. Для этого нужно помес­тить этот символ в квадратные скобки. При помощи этой формы записи можно определить, что некоторый символ не является символом подстановки, а выполняет роль части шаблона поиска.

Например, чтобы в некоторой таблице Table найти строки, ко­торые оканчиваются двузначными числами с символом процента (например, «выплачено 15%» или «выплачено 86%»), необходи­мо составить такой запрос:

SELECT Column

FROM Table

WHERE Column LIKE '* ##[%]';

В таблице могут встречаться записи, которые не имеют ника­ких значений в некоторых полях. Как отмечалось ранее, Access такой вариант учитывает и позволяет вместо конкретного данно­го вводить значение NULL. Поэтому при выполнении запросов в некоторых столбцах могут отображаться неопределенные значе­ния NULL.

Например, следующий запрос отобразит всю информацию о студентах (в том числе и номера их телефонов):

SELECT *

FROM tbIStudents;

Поле номера телефона fPhone заполнено не для всех студен­тов, так как не у всех студентов есть домашний телефон, поэтому в нем содержатся как номера телефонов, так и значения NULL.

Возникает вопрос, что делать, если требуется найти информа­цию со статусом NULL. Выполнять сравнение значения такого поля с чем-либо нельзя (даже с другими значениями NULL), так как NULL представляет собой неизвестное значение. В таком слу­чае поиск реализуется при помощи специального условия IS NULL (либо IS NOT NULL), которое имеет такой синтаксис:

WHERE column_name IS [NOT] NULL

Например, чтобы выполнить поиск тех студентов, у которых нет домашнего телефона, нужно написать запрос с использовани­ем оператора IS NULL:

SELECT *

FROM tbIStudents

WHERE fPhone IS NULL;

Оператор IS NOT NULL выполняет прямо противоположную роль. Он служит для выборки только тех записей, в которых все значения определены. Так, если выполнить предыдущий запрос, указав в предложении WHERE оператор IS NOT NULL, то будут найдены студенты, у которых имеются домашние телефоны:

с полным описанием текстовой информации. Но не вполне по­нятно, что делать, если требуется найти данные по неполной ин­формации о них, только по части строки. Например, может пона­добиться найти всех студентов, фамилия которых начинается на «Иван» (Иванов, Иванченко и т.д.).

•Для таких задач применяется ключевое слово LIKE, которое проверяет, совпадает ли содержащаяся в поле строка с условием поиска. В качестве условия используются группы символов, ко­торые могут соответствовать искомым данным, и символы под­становки.

Синтаксис LIKE следующий:

WHERE column_name [NOT] LIKE 'mask'

где mask - налагаемая на данные маска поиска.

В маске могут быть использованы символы подстановки:

  • знак вопроса (?) - обозначает любой одиночный символ;

  • знак диез ( # ) - обозначает любое одиночное число;

  • символ звездочка ( * ) - обозначает последовательность сим­волов (включая символы нуля);

  • [a-z] - обозначает символы в определенном интервале;

  • [!a-z] - символы кроме определенного интервала.

Например, найдем всех студентов, фамилия которых начина­ется на «Иван»:

SELECT *

FROM tbIStudents

WHERE fLastName LIKE 'Иван*';

Рассмотрим еще один пример. Пусть требуется найти студен­тов, проживающих в г. Москве. Название города содержится в столбце fCity и предваряется символами «г.». Поэтому в маске поиска будем использовать символ * перед названием:

SELECT *

FROM tbIStudents WHERE fCity LIKE '*Москва';

Может возникнуть вопрос, что делать, если нужно найти сам знак вопроса (?) или знак звездочки ( * ), которые уже различают­ся системой как символы подстановки. Для этого нужно помес­тить этот символ в квадратные скобки. При помощи этой формы записи можно определить, что некоторый символ не является символом подстановки, а выполняет роль части шаблона поиска.

Например, чтобы в некоторой таблице Table найти строки, ко­торые оканчиваются двузначными числами с символом процента (например, «выплачено 15%» или «выплачено 86%»), необходи­мо составить такой запрос:

SELECT Column

FROM Table

WHERE Column LIKE '* ##[%]';

В таблице могут встречаться записи, которые не имеют ника­ких значений в некоторых полях. Как отмечалось ранее, Access такой вариант учитывает и позволяет вместо конкретного данно­го вводить значение NULL. Поэтому при выполнении запросов в некоторых столбцах могут отображаться неопределенные значе­ния NULL.

Например, следующий запрос отобразит всю информацию о студентах (в том числе и номера их телефонов):

SELECT *

FROM tbIStudents;

Поле номера телефона fPhone заполнено не для всех студен­тов, так как не у всех студентов есть домашний телефон, поэтому в нем содержатся как номера телефонов, так и значения NULL.

Возникает вопрос, что делать, если требуется найти информа­цию со статусом NULL. Выполнять сравнение значения такого поля с чем-либо нельзя (даже с другими значениями NULL), так как NULL представляет собой неизвестное значение. В таком слу­чае поиск реализуется при помощи специального условия IS NULL (либо IS NOT NULL), которое имеет такой синтаксис:

WHERE column_name IS [NOT] NULL

Например, чтобы выполнить поиск тех студентов, у которых нет домашнего телефона, нужно написать запрос с использовани­ем оператора IS NULL:

SELECT *

FROM tbIStudents

WHERE fPhone IS NULL;

Оператор IS NOT NULL выполняет прямо противоположную роль. Он служит для выборки только тех записей, в которых все значения определены. Так, если выполнить предыдущий запрос, указав в предложении WHERE оператор IS NOT NULL, то будут найдены студенты, у которых имеются домашние телефоны:

с полным описанием текстовой информации. Но не вполне по­нятно, что делать, если требуется найти данные по неполной ин­формации о них, только по части строки. Например, может пона­добиться найти всех студентов, фамилия которых начинается на «Иван» (Иванов, Иванченко и т.д.).

•Для таких задач применяется ключевое слово LIKE, которое проверяет, совпадает ли содержащаяся в поле строка с условием поиска. В качестве условия используются группы символов, ко­торые могут соответствовать искомым данным, и символы под­становки.

Синтаксис LIKE следующий:

WHERE column_name [NOT] LIKE 'mask'

где mask - налагаемая на данные маска поиска.

В маске могут быть использованы символы подстановки:

  • знак вопроса (?) - обозначает любой одиночный символ;

  • знак диез (#) - обозначает любое одиночное число;

  • символ звездочка ( * ) - обозначает последовательность сим­волов (включая символы нуля);

  • [a-z] - обозначает символы в определенном интервале;

  • [!a-z] - символы кроме определенного интервала.

Например, найдем всех студентов, фамилия которых начина­ется на «Иван»:

SELECT *

FROM tbIStudents

WHERE fLastName LIKE ’Иван»';

Рассмотрим еще один пример. Пусть требуется найти студен­тов, проживающих в г. Москве. Название города содержится в столбце fCity и предваряется символами «г.». Поэтому в маске поиска будем использовать символ * перед названием:

SELECT *

FROM tbIStudents WHERE fCity LIKE '*Москва';

Может возникнуть вопрос, что делать, если нужно найти сам знак вопроса (?) или знак звездочки ( * ), которые уже различают­ся системой как символы подстановки. Для этого нужно помес­тить этот символ в квадратные скобки. При помощи этой формы записи можно определить, что некоторый символ не является символом подстановки, а выполняет роль части шаблона поиска.

Например, чтобы в некоторой таблице Table найти строки, ко­торые оканчиваются двузначными числами с символом процента (например, «выплачено 15%» или «выплачено 86%»), необходи­мо составить такой запрос:

SELECT Column

FROM Table

WHERE Column LIKE '* ##[%]';

В таблице могут встречаться записи, которые не имеют ника­ких значений в некоторых полях. Как отмечалось ранее, Access такой вариант учитывает и позволяет вместо конкретного данно­го вводить значение NULL. Поэтому при выполнении запросов в некоторых столбцах могут отображаться неопределенные значе­ния NULL.

Например, следующий запрос отобразит всю информацию о студентах (в том числе и номера их телефонов):

SELECT *

FROM tbIStudents;

Поле номера телефона fPhone заполнено не для всех студен­тов, так как не у всех студентов есть домашний телефон, поэтому в нем содержатся как номера телефонов, так и значения NULL.

Возникает вопрос, что делать, если требуется найти информа­цию со статусом NULL. Выполнять сравнение значения такого поля с чем-либо нельзя (даже с другими значениями NULL), так как NULL представляет собой неизвестное значение. В таком слу­чае поиск реализуется при помощи специального условия IS NULL (либо IS NOT NULL), которое имеет такой синтаксис:

WHERE column_name IS [NOT] NULL

Например, чтобы выполнить поиск тех студентов, у которых нет домашнего телефона, нужно написать запрос с использовани­ем оператора IS NULL:

SELECT *

FROM tbIStudents

WHERE fPhone IS NULL;

Оператор IS NOT NULL выполняет прямо противоположную роль. Он служит для выборки только тех записей, в которых все значения определены. Так, если выполнить предыдущий запрос, указав в предложении WHERE оператор IS NOT NULL, то будут найдены студенты, у которых имеются домашние телефоны: с полным описанием текстовой информации. Но не вполне по­нятно, что делать, если требуется найти данные по неполной ин­формации о них, только по части строки. Например, может пона­добиться найти всех студентов, фамилия которых начинается на «Иван» (Иванов, Иванченко и т.д.).

•Для таких задач применяется ключевое слово LIKE, которое проверяет, совпадает ли содержащаяся в поле строка с условием поиска. В качестве условия используются группы символов, ко­торые могут соответствовать искомым данным, и символы под­становки.

Синтаксис LIKE следующий:

WHERE column_name [NOT] LIKE 'mask'

где mask - налагаемая на данные маска поиска.

В маске могут быть использованы символы подстановки:

  • знак вопроса (?) - обозначает любой одиночный символ;

  • знак диез ( #) - обозначает любое одиночное число;

  • символ звездочка ( * ) - обозначает последовательность сим­волов (включая символы нуля);

  • [a-z] - обозначает символы в определенном интервале;

  • [!a-z] - символы кроме определенного интервала.

Например, найдем всех студентов, фамилия которых начина­ется на «Иван»:

SELECT *

FROM tbIStudents

WHERE fLastName LIKE ’Иван*';

Рассмотрим еще один пример. Пусть требуется найти студен­тов, проживающих в г. Москве. Название города содержится в столбце fCity и предваряется символами «г.». Поэтому в маске поиска будем использовать символ * перед названием:

SELECT *

FROM tbIStudents WHERE fCity LIKE '*Москва';

Может возникнуть вопрос, что делать, если нужно найти сам знак вопроса (?) или знак звездочки ( * ), которые уже различают­ся системой как символы подстановки. Для этого нужно помес­тить этот символ в квадратные скобки. При помощи этой формы записи можно определить, что некоторый символ не является символом подстановки, а выполняет роль части шаблона поиска.

Например, чтобы в некоторой таблице Table найти строки, ко­торые оканчиваются двузначными числами с символом процента (например, «выплачено 15%» или «выплачено 86%»), необходи­мо составить такой запрос:

SELECT Column

FROM Table

WHERE Column LIKE '* ##[%]';

В таблице могут встречаться записи, которые не имеют ника­ких значений в некоторых полях. Как отмечалось ранее, Access такой вариант учитывает и позволяет вместо конкретного данно­го вводить значение NULL. Поэтому при выполнении запросов в некоторых столбцах могут отображаться неопределенные значе­ния NULL.

Например, следующий запрос отобразит всю информацию о студентах (в том числе и номера их телефонов):

SELECT *

FROM tbIStudents;

Поле номера телефона fPhone заполнено не для всех студен­тов, так как не у всех студентов есть домашний телефон, поэтому в нем содержатся как номера телефонов, так и значения NULL.

Возникает вопрос, что делать, если требуется найти информа­цию со статусом NULL. Выполнять сравнение значения такого поля с чем-либо нельзя (даже с другими значениями NULL), так как NULL представляет собой неизвестное значение. В таком слу­чае поиск реализуется при помощи специального условия IS NULL (либо IS NOT NULL), которое имеет такой синтаксис:

WHERE column_name IS [NOT] NULL

Например, чтобы выполнить поиск тех студентов, у которых нет домашнего телефона, нужно написать запрос с использовани­ем оператора IS NULL:

SELECT *

FROM tbIStudents

WHERE fPhone IS NULL;

Оператор IS NOT NULL выполняет прямо противоположную роль. Он служит для выборки только тех записей, в которых все значения определены. Так, если выполнить предыдущий запрос, указав в предложении WHERE оператор IS NOT NULL, то будут найдены студенты, у которых имеются домашние телефоны: с полным описанием текстовой информации. Но не вполне по­нятно, что делать, если требуется найти данные по неполной ин­формации о них, только по части строки. Например, может пона­добиться найти всех студентов, фамилия которых начинается на «Иван» (Иванов, Иванченко и т.д.).

•Для таких задач применяется ключевое слово LIKE, которое проверяет, совпадает ли содержащаяся в поле строка с условием поиска. В качестве условия используются группы символов, ко­торые могут соответствовать искомым данным, и символы под­становки.

Синтаксис LIKE следующий:

WHERE column_name [NOT] LIKE 'mask'

где mask - налагаемая на данные маска поиска.

В маске могут быть использованы символы подстановки:

  • знак вопроса (?) - обозначает любой одиночный символ;

  • знак диез (#) - обозначает любое одиночное число;

  • символ звездочка ( *) - обозначает последовательность сим­волов (включая символы нуля);

  • [a-z] - обозначает символы в определенном интервале;

  • [!a-z] - символы кроме определенного интервала.

Например, найдем всех студентов, фамилия которых начина­ется на «Иван»:

SELECT *

FROM tbIStudents

WHERE fLastName LIKE 'Иван*';

Рассмотрим еще один пример. Пусть требуется найти студен­тов, проживающих в г. Москве. Название города содержится в столбце fCity и предваряется символами «г.». Поэтому в маске поиска будем использовать символ * перед названием:

SELECT *

FROM tbIStudents WHERE fCity LIKE '*Москва';

Может возникнуть вопрос, что делать, если нужно найти сам знак вопроса (?) или знак звездочки ( * ), которые уже различают­ся системой как символы подстановки. Для этого нужно помес­тить этот символ в квадратные скобки. При помощи этой формы записи можно определить, что некоторый символ не является символом подстановки, а выполняет роль части шаблона поиска.

Например, чтобы в некоторой таблице Table найти строки, ко­торые оканчиваются двузначными числами с символом процента (например, «выплачено 15%» или «выплачено 86%»), необходи­мо составить такой запрос:

SELECT Column

FROM Table

WHERE Column LIKE '* ##[%]';

В таблице могут встречаться записи, которые не имеют ника­ких значений в некоторых полях. Как отмечалось ранее, Access такой вариант учитывает и позволяет вместо конкретного данно­го вводить значение NULL. Поэтому при выполнении запросов в некоторых столбцах могут отображаться неопределенные значе­ния NULL.

Например, следующий запрос отобразит всю информацию о студентах (в том числе и номера их телефонов):

SELECT *

FROM tbIStudents;

Поле номера телефона fPhone заполнено не для всех студен­тов, так как не у всех студентов есть домашний телефон, поэтому в нем содержатся как номера телефонов, так и значения NULL.

Возникает вопрос, что делать, если требуется найти информа­цию со статусом NULL. Выполнять сравнение значения такого поля с чем-либо нельзя (даже с другими значениями NULL), так как NULL представляет собой неизвестное значение. В таком слу­чае поиск реализуется при помощи специального условия IS NULL (либо IS NOT NULL), которое имеет такой синтаксис:

WHERE column_name IS [NOT] NULL

Например, чтобы выполнить поиск тех студентов, у которых нет домашнего телефона, нужно написать запрос с использовани­ем оператора IS NULL:

SELECT *

FROM tbIStudents

WHERE fPhone IS NULL;

Оператор IS NOT NULL выполняет прямо противоположную роль. Он служит для выборки только тех записей, в которых все значения определены. Так, если выполнить предыдущий запрос, указав в предложении WHERE оператор IS NOT NULL, то будут найдены студенты, у которых имеются домашние телефоны:

с полным описанием текстовой информации. Но не вполне по­нятно, что делать, если требуется найти данные по неполной ин­формации о них, только по части строки. Например, может пона­добиться найти всех студентов, фамилия которых начинается на «Иван» (Иванов, Иванченко и т.д.).

•Для таких задач применяется ключевое слово LIKE, которое проверяет, совпадает ли содержащаяся в поле строка с условием поиска. В качестве условия используются группы символов, ко­торые могут соответствовать искомым данным, и символы под­становки.

Синтаксис LIKE следующий:

WHERE column_name [NOT] LIKE 'mask'

где mask - налагаемая на данные маска поиска.

В маске могут быть использованы символы подстановки:

  • знак вопроса (?) - обозначает любой одиночный символ;

  • знак диез ( # ) - обозначает любое одиночное число;

  • символ звездочка ( * ) - обозначает последовательность сим­волов (включая символы нуля);

  • [a-z] - обозначает символы в определенном интервале;

  • [!a-z] - символы кроме определенного интервала.

Например, найдем всех студентов, фамилия которых начина­ется на «Иван»:

SELECT *

FROM tbIStudents

WHERE fLastName LIKE 'Иван*';

Рассмотрим еще один пример. Пусть требуется найти студен­тов, проживающих в г. Москве. Название города содержится в столбце fCity и предваряется символами «г.». Поэтому в маске поиска будем использовать символ * перед названием:

SELECT *

FROM tbIStudents WHERE fCity LIKE '*Москва';

Может возникнуть вопрос, что делать, если нужно найти сам знак вопроса (?) или знак звездочки ( * ), которые уже различают­ся системой как символы подстановки. Для этого нужно помес­тить этот символ в квадратные скобки. При помощи этой формы записи можно определить, что некоторый символ не является символом подстановки, а выполняет роль части шаблона поиска.

Например, чтобы в некоторой таблице Table найти строки, ко­торые оканчиваются двузначными числами с символом процента (например, «выплачено 15%» или «выплачено 86%»), необходи­мо составить такой запрос:

SELECT Column

FROM Table

WHERE Column LIKE '* ##[%]';

В таблице могут встречаться записи, которые не имеют ника­ких значений в некоторых полях. Как отмечалось ранее, Access такой вариант учитывает и позволяет вместо конкретного данно­го вводить значение NULL. Поэтому при выполнении запросов в некоторых столбцах могут отображаться неопределенные значе­ния NULL.

Например, следующий запрос отобразит всю информацию о студентах (в том числе и номера их телефонов):

SELECT *

FROM tbIStudents;

Поле номера телефона fPhone заполнено не для всех студен­тов, так как не у всех студентов есть домашний телефон, поэтому в нем содержатся как номера телефонов, так и значения NULL.

Возникает вопрос, что делать, если требуется найти информа­цию со статусом NULL. Выполнять сравнение значения такого поля с чем-либо нельзя (даже с другими значениями NULL), так как NULL представляет собой неизвестное значение. В таком слу­чае поиск реализуется при помощи специального условия IS NULL (либо IS NOT NULL), которое имеет такой синтаксис:

WHERE column_name IS [NOT] NULL

Например, чтобы выполнить поиск тех студентов, у которых нет домашнего телефона, нужно написать запрос с использовани­ем оператора IS NULL:

SELECT *

FROM tbIStudents

WHERE fPhone IS NULL;

Оператор IS NOT NULL выполняет прямо противоположную роль. Он служит для выборки только тех записей, в которых все значения определены. Так, если выполнить предыдущий запрос, указав в предложении WHERE оператор IS NOT NULL, то будут найдены студенты, у которых имеются домашние телефоны:

SELECT *

FROM tbIStudents

WHERE fPhone IS NOT NULL;