В предыдущих примерах для поиска необходимого текста мы использовали оператор =. SQL также позволяет искать фрагменты текстовой строки с помощью оператора LIKE. Это особенно полезно, когда мы не знаем, как именно было записано в базе данных текстовое значение. Кроме того, бывают случаи, когда текстовое значение было написано с ошибками. Если понадобится найти все счета, выставленные в городах, название которых начинается с буквы T, в условии WHERE придется изменить параметры.

Оператор LIKE использует подстановочные знаки, представленные символом % (символ процента). То, что следует за знаком =, это единственное значение, которое вы увидите в своем наборе результатов. С помощью оператора LIKE и подстановочного знака вы можете определить варианты ввода.

Примечание

Подстановочные знаки всегда заключаются в одинарные кавычки. Не заключенный в кавычки символ % — это просто арифметический оператор (показан ранее в этой главе в таблице операторов). Текстовый поиск не чувствителен к регистру. При использовании в запросе строчной или заглавной буквы результаты будут одинаковы.

С помощью подстановочного знака можно задать любое количество символов любого типа. Как показано в примере ниже, запрос ищет любые счета, выставленные в городах на букву T. В результат теперь попали Торонто и Тусон.

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

BillingCity LIKE 'T%'

ORDER BY

Total

Рис. 50

Добавление еще одного символа % перед буквой T изменит условие поиска на поиск счета, выставленного в городе, название которого содержит букву T.

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

BillingCity LIKE '%T%'

ORDER BY

Total

Рис. 51

Примечание

Разумеется, при этом в результатах появятся и города, названия которых начинаются или заканчиваются строчной буквой t. Символ % может представлять любую букву (буквы), включая строчную t.

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

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

BillingCity NOT LIKE '%T%'

ORDER BY

Total

Из примеров видно, что существует множество способов использования оператора с подстановочными знаками. Рассмотрим наиболее распространенные.

Рис. 52

Рис. 53

Примечание

Символ % можно интерпретировать как «что угодно». Например, когда вы указываете '%T%', вы имеете в виду: «Меня не беспокоит, какие символы содержатся в строке до или после буквы T (буква T при этом не первая и не последняя)».

<p id="_8_xhtml_2523toc_marker_8_5"><strong>Фильтрация записей по дате</strong></p>

Используя все знания как о числах, так и о тексте, вы сможете теперь выполнить поиск счета, выставленного в определенную дату. Рассмотрим следующий пример:

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

InvoiceDate = '2009-01-03 00:00:00'

ORDER BY

Total

Рис. 54

Обратите внимание на способ написания даты. При указании даты в запросе важно сначала проанализировать, каким образом дата хранится в запрашиваемой таблице. Как вы знаете из главы 1, для этого надо перейти на вкладку Browse Data (Просмотр данных), выбрать таблицу invoices и проанализировать формат, в котором столбец InvoiceDate хранит даты. В нашей базе данных даты хранятся в формате гггг-мм-дд 00:00:00. Затем перейдите на вкладку Database Structure (Структура базы данных) и проанализируйте поле InvoiceDate таблицы invoices. Вы видите, что в столбце Type даты имеют тип данных DATETIME.

В условии WHERE дата, как и текст, заключена в одинарные кавычки. При работе с датами используйте те же операторы, что и при работе с числами: =, >, <, BETWEEN и т. д.

<p id="практические_задания_7">Практические задания</p>

• Получите все счета, выставленные в период с 1 января 2009 г. по 31 декабря 2009 г.

• Найдите 10 самых крупных счетов, полученных после 5 июля 2009 г.

<p id="_8_xhtml_2523toc_marker_8_6"><strong>Функция DATE()</strong></p>

При работе с датами в SQL можно использовать ряд функций, которые помогают получать более точные результаты. Из предыдущего примера видно, что столбец InvoiceDate таблицы invoices имеет тип данных DATETIME. Поэтому, когда мы указывали значение даты в услови WHERE, мы включали время (2009-01-03 00:00:00). Функция DATE()позволяет исключить время при указании параметров даты.

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

Invoices

WHERE

DATE(InvoiceDate) = '2009-01-03'

ORDER BY

Total

Рис. 55

Результат этого запроса идентичен результату предыдущего запроса. Однако использование функции DATE() позволяет получить результат быстрее, когда параметры времени либо отсутствуют, либо не актуальны.

Примечание

В SQL доступно множество функций. Функция DATE () особенно полезна при использовании условия WHERE для сортировки записей по дате. В главе 7 мы более подробно рассмотрим другие функции.

<p id="_8_xhtml_2523toc_marker_8_7"><strong>Использование операторов AND и OR с двумя отдельными полями</strong></p>
Перейти на страницу:

Все книги серии Библиотека программиста

Похожие книги