Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Это сравнение вернет ложь, если YEAR_OF_BIRTH равняется 1950, больше него или имеет значение NULL.

Подробное обсуждение NULL см. в разд. "Обсуждение NULL".

Пары сравниваемых значений могут быть столбцами, константами или вычисляемыми выражениями[73], они должны быть вычислены в том же типе данных. Функция CAST() может быть использована для трансляции в тип данных, совместимый для сравнения.

Арифметические предикаты, использующие эти символы, не требуют пояснения. При этом символьные проверки также могут их использовать. Проверки, использующие сравнения = и <>, понятны. Следующий оператор использует оператор >=, чтобы вернуть все строки, где LAST_NAME равен тестируемой строке, а также те строки, где LAST NAME рассматривается в алфавитно-цифровом порядке, как "больше, чем":

SELECT * FROM EMPLOYEE

WHERE LAST_NAME >= 'Smith';

В таблице EMPLOYEE нет значений 'Smith', HO запрос вернет 'Stansbury', 'Steadman' и так далее вплоть до 'Young'. База данных Employee в этом примере использует набор символов NONE, в котором символы в нижнем регистре имеют приоритет перед символами в верхнем регистре. В нашем примере строка 'SMITH' не будет выбрана, потому что искомая строка 'SM' (83 + 77) будет меньше, чем 'SM' (83 + 109).

Наборы символов и последовательности сортировки

Алфавитно-цифровые последовательности определяются на двух уровнях: набор символов и последовательность сортировки. Каждый набор символов имеет свои собственные уникальные правила приоритетов. Когда используется альтернативная последовательность сортировки, то правила последовательности сортировки перекрывают правила набора символов.

Последовательность сортировки по умолчанию для каждого набора символов - та последовательность, чье имя соответствует имени набора символов, - является бинарной. Двоичная последовательность сортировки определяет возрастание по цифровым кодам символа в той системе, в которой он кодирован (ASCII, ANSI, Unicode и т.д.). Альтернативные последовательности сортировки обычно перекрывают порядок по умолчанию, чтобы соблюдать локальные или специальные правила, такие как нечувствительность к регистру или упорядочение по словарю[74].

<p>Другие предикаты сравнения</p>

Предикаты BETWEEN, CONTAINING, LIKE и STARTING WITH, представленные в табл. 21.5, имеют одинаковый приоритет при вычислениях в операторах сравнения, описанных

в табл. 21.4. Если они конфликтуют друг с другом, то вычисление осуществляется строго слева направо.

Таблица 21.5. Другие предикаты сравнения

Предикат

Назначение

BETWEEN ... AND ...

Значение попадает во включающий диапазон значений

CONTAINING

Строковое значение содержит указанную строку. Сравнение является независимым от регистра

IN

Значение присутствует в указанном наборе*

LIKE

Равенство указанной строке с шаблонными подстановками

STARTING WITH

Строковое значение начинается с указанной строки

* Наиболее эффективной является ситуация, когда набор содержит небольшое количество констант. Набор не может превышать 1500 элементов. (См. разд. "Предикаты существования".)

BETWEEN использует два аргумента совместимых типов, разделенных ключевым словом AND. Меньшее значение должно быть первым аргументом, если нет, не найдет ни одной строки, соответствующей предикату. Поиск является включающим - то есть значения, соответствующие обоим аргументам, будут включены в возвращаемый набор, например:

SELECT * FROM EMPLOYEE

WHERE HIRE_DATE BETWEEN '01.01.1992' AND CURRENT_TIMESTAMP;

BETWEEN будет использовать возрастающий индекс по искомому столбцу, если таковой доступен.

CONTAINING ищет строку или тип, подобный строке, отыскивая последовательность символов, которая соответствует его аргументу. Он может быть использован для алфавитно-цифрового (подобного строковому) поиска в числах и датах. Поиск CONTAINING является чувствительным к регистру.

Следующий пример

SELECT * FROM PROJECT

WHERE PROJ_NAME CONTAINING ' Map ' ;

возвращает две строки проекта: 'AutoMap' и 'MapBrowser port'. Следующий пример

SELECT * FROM SALARY_HISTORY

WHERE CHANGE_DATE CONTAINING 93;

возвращает все строки, где датой является год 1993.

! ! !

ВНИМАНИЕ! В некоторых релизах CONTAINING является непредсказуемым, когда используется для BLOB, чей размер больше 1024 байт. Это определено как ошибка и будет вскоре исправлено в следующем после 1.5 релизе.

. ! .

IN принимает в качестве аргумента список значений и возвращает все строки, где значение столбца в левой части равно любому значению в множестве, например:

SELECT * FROM EMPLOYEE

WHERE FIRST_NAME IN('Pete', 'Ann', 'Roger');

NULL не может быть включен в множество поиска.

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

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