Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

Арифметические предикаты, использующие эти символы, не требуют пояснения. При этом символьные проверки также могут их использовать. Проверки, использующие сравнения = и <>, понятны. Следующий оператор использует оператор >=, чтобы вернуть все строки, где 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] .

74

Для русского языка обычно используется кодировка WIN 1251, и два варианта COLLATE - WIN 1251 (по умолчанию), и PXWCYRL. За особенностями использования вариантов COLLATE, и кодировками и сортировками для других языков (в том числе стран СНГ) обратитесь к ReleaseNotes.
– Прим. науч. ред.

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

Предикаты 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 не может быть включен в множество поиска.

Список аргументов в IN о может быть представлен в виде подзапроса, который возвращает строки, состоящие из одного столбца. Подробности см. в разд. "Предикаты существования" далее в этой главе.

! ! !

ВНИМАНИЕ! Общей ошибкой "чайников" является трактовка предиката IN (<значение>) как если бы он был эквивалентным предикату =<значение>, потому что оба предиката логически эквивалентны в том смысле, что оба возвращают один и тот же результат. При этом IN не использует индексы. Поскольку среди равных поисков обычно лучшим является тот, который оптимизирован по индексу, использование IN является плохим решением с точки зрения производительности.

. ! .

LIKE является чувствительным к регистру шаблоном оператора поиска. Это довольно тупой инструмент, выполняющий сравнение с шаблоном поиска в обычном выражении. Он распознает два шаблонных символа: % и _ (символ подчеркивания), которые работают следующим образом.

* Символ % может быть подставлен в строку поиска для представления любого количества любых символов, в том числе и нулевого количества, например:

LIKE '%mit%'

вернет истину для таких строк, как 'blacksmith', 'mitgenommen', а также и 'mit'.

* Символ подчеркивания (_) может быть вставлен в строку поиска для представления одного неопределенного символа. Например, следующее условие задает поиск записей, где фамилия может быть 'Smith', 'Smyth' или другой, похожей на шаблон:

LIKE 'Sm_th'

Если вам нужно отыскать строку, которая содержит один или оба шаблонных символа в литерале шаблона, вы можете "отменить" символ литерала- то есть отметить его символом, который предшествует специальному отменяемому символу.

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

Поделиться:
Популярные книги

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Единственная для темного эльфа 3

Мазарин Ан
3. Мир Верея. Драконья невеста
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Единственная для темного эльфа 3

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Клеванский Кирилл Сергеевич
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.51
рейтинг книги
Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Кодекс Крови. Книга ХVII

Борзых М.
17. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVII

Никчёмная Наследница

Кат Зозо
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Никчёмная Наследница

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Жандарм 5

Семин Никита
5. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 5

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Тактик

Земляной Андрей Борисович
2. Офицер
Фантастика:
альтернативная история
7.70
рейтинг книги
Тактик

Новый Рал 5

Северный Лис
5. Рал!
Фантастика:
попаданцы
5.00
рейтинг книги
Новый Рал 5

Надуй щеки! Том 7

Вишневский Сергей Викторович
7. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки! Том 7