Читаем Справка по SQL полностью

Предикат LIKE сравнивает строку, указанную в первом выражении для вычисления значения строки, называемого проверяемым значением, с шаблоном, который определен во втором выражении для вычисления значения строки. В образце разрешается использовать два трафаретных символа:

* Символ подчеркивания (_), который можно использовать вместо любого единичного символа в проверяемом значении.

* Символ процента (%), который заменяет набор любых символов (число символов в наборе может быть от 0 и более) в проверяемом значении.

Если проверяемое значение соответствует образцу с учетом трафаретных символов, то значение предиката равно TRUE. Ниже приводится несколько примеров написания шаблонов.


Шаблон

Описание

'abc%'

Любые строки, которые начинаются с букв "abc".

'abc_'

Строки длиной строго 4 символа, причем первыми символами строки должны быть "abc".

'%z'

Любая последовательность символов, которая обязательно заканчивается символом "z".

'%Rostov%'

Любая последовательность символов, содержащая слово "Rostov" в любом месте строки.


Пример. Найти все корабли, имена классов которых заканчиваются на букву 'о':


SELECT *

FROM Ships

WHERE class LIKE '%o';


Результатом выполнения запроса будет следующая таблица:


name

class

launched

Haruna

Kongo

1916

Hiei

Kongo

1914

Kirishima

Kongo

1915

Kongo

Kongo

1913

Musashi

Yamato

1942

Yamato

Yamato

1941


Пример. Найти все корабли, имена классов которых заканчиваются на букву 'о', но не на 'go':


SELECT *

FROM Ships

WHERE class NOT LIKE '%go' AND class LIKE '%o';


name

class

launched

Musashi

Yamato

1942

Yamato

Yamato

1941


Если искомая строка содержит трафаретный символ, то следует задать управляющий символ в предложении ESCAPE. Этот управляющий символ должен использоваться в шаблоне перед трафаретным символом, сообщая о том, что трафаретный символ следует трактовать как обычный символ. Например, если в некотором поле следует отыскать все значения, содержащие символ "_", то шаблон '%_%' приведет к тому, что будут возвращены все записи из таблицы. В данном случае шаблон следует записать следующим образом:

'%#_%' ESCAPE '#'

Для проверки значения на соответствие строке "25%" можно воспользоваться таким предикатом:

LIKE '25|%' ESCAPE '|'

Истинностное значение предиката LIKE присваивается в соответствии со следующими правилами:

* Если либо проверяемое значение, либо образец, либо управляющий символ равен NULL, истинностное значение равно UNKNOWN.

* В противном случае, если проверяемое значение и образец имеют нулевую длину, истинностное значение равно TRUE.

* В противном случае, если проверяемое значение соответствует шаблону, то предикат LIKE равен TRUE.

* Если не соблюдается ни одно из перечисленных выше условий, предикат LIKE равен FALSE.


Проверка отсутствия/наличия значения. Предикат IS NULL


Предикат

IS [NOT] NULL

позволяет проверить отсутствие (наличие) значения в полях таблицы. Использование в этих случаях обычных предикатов сравнения может привести к неверным результатам, т.к. сравнение со значением NULL дает результат UNKNOWN (неизвестно).

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


SELECT *

FROM Pc

WHERE price IS NULL;


Получение итоговых значений



Как узнать количество моделей ПК, выпускаемых тем или иным поставщиком? Как определить среднее значение цены на компьютеры, имеющие одинаковые технические характеристики? На эти и многие другие вопросы, связанные с некоторой статистической информацией, можно получить ответы при помощи итоговых (агрегатных) функций. Стандартом предусмотрены следующие агрегатные функции:


Перейти на страницу:

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

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных