Программирование >>  Создание клиентов mysql 

1 ... 36 37 38 [ 39 ] 40 41 42 ... 201



128 Главно. Типы данных, переменные и выражения

по умолчанию. Ключевое слово BINARY заставляет учитывать регистр при сортировке строк.

Оператор BETWEEN является упрощенным вариантом комбинации операторо= и <=. Таким образом, инструкции, показанные в листинге 10.7, являются эквивалентными.

SELECT stPrice FROM invoicesku

WHERE ListPrice >= 50 AND ListPrice <= 100

SELECT U, ListPrice

FROM invoicesku WHERE ListPrice BETWEEN 50 AND 100

Операторы IN и NOT IN принимают в скобках группу разделенных запятыми значений, задающих допустимое множество. Если левый операнд совпадает с одним из значений в скобках, результат проверки будет истинным. В списке должны быть указаны литералы или имена столбцов. В отличие от некоторых СУБД, в MySQL не допускается указывать в скобках запрос. Подчиненные запросы появятся в MySQLвер-сии 4.1.

Значения, указанные в скобках, приводятся к типу левого операнда. Если, например, целое число сравнивается с группой чисел с плавающей запятой, то последние будут округлены. Это означает, что проверка 5 IN (3.2, 4.1, 4.9) окажется истинной, а проверка 5 . О IN (3.2, 4.1, 4.9) -нет.

Оператор = проверяет равенство операндов, а оператор = и о - их неравенство. Если любой из операндов равен NULL, то результат проверки также будет равен NULL, а не TRUE или FALSE, как можно предположить. К примеру, инструкция

SELECT 17 = NULL

вернет NULL, а не 0. Инструкция SELECT NULL = NULL

тоже вернет NULL. Чтобы избежать такого поведения, пользуйтесь оператором <=>, специфичным для MySQL. Результат инструкции

SELECT NUL <=> NULL

равен 1. Аналогичные проверки выполняют оператор NULL и IS NOT NULL.

Оператор ЫКЕ и NO ЫКЕ сравнивают левый операнд с шаблоном, указанным в правом операнде. Метасимвол % в шаблоне соответствует произвольному числу символов, а метасимвол - одиночному символу. Остальные символы воспринимаются буквально. Если необходимо выполнить сравнение с самим символом % или его нужно защитить от интерпретации с помощью обратной косой черты.

Строка шаблона анализируется дважды. При этом на первом проходе последовательности \%, \ и \\ будут заменены соответствующими литералами, а вот остальные управляющие последовательности не распознаются, поэтому \п превратится а не в символ новой строки. Проверка обычных управляющих последовательностей выполняется на втором проходе. Это означает, что в данном случае символы обратной косой черты необходимо удваивать. Таким образом, чтобы вставить в шаблон символ табуляции, следует записать \\\t. Обратной косой черте соответствует запись \\\\.



Операторы

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

помечен ключевым словом BINARY.

SELECT SELECT SELECT SELECT SELECT

a\tb a\tb a\tb aWb- a\tb

LIKE LIKE

LIKE LIKE LIKE

%b ; a b;

%\\\\%; %t% ESCAPE

Оператор TCEXP сравнивает левый операнд с регулярным выражением, стоящим справа. В регулярных выражениях применяется специальный язык описания шаблонов, спецификация которого содержится в стандарте POSIX 1003.2. Они всегда чувствительны к регистру символов. Регулярные выражения также подвержены двойному синтаксическому анализу, но предложение ESCAPE в операторе REGEXP не поддерживается.

На самом верхнем уровне регулярное выражение состоит из одного или нескольких блоков, разделенных вертикальной чертой Этот символ аналогичен оператору OR в SQL, т.е. сравниваемая строка может соответствовать любой из ветвей. В табл. 10.5 приведен ряд примеров.

Регулярное выражение apple

apple I ball begin end break

Чему соответствует apple

apple ball begin, end илиbreak

Каждая ветвь состоит из одной или нескольких атомарных конструкций, за каждой из которых может следовать определяющий число

повторений конструкции. Символ * означает произвольное количество повторений, символ + - как минимум одно, а символ ? - не более одного.

Существуют и более точные модификаторы. Они записываются в фигурных скобках. Если в скобках стоит одно число, конструкция должна встречаться указанное количество раз. Число с запятой означает, что конструкция встречается как минимум указанное количество раз. Два числа, разделенных запятой, задают диапазон от и до . Соответствующие примеры приведены в табл. 10.6.



Регулярное выражение

а(Ь*)

а(Ь+)

а(Ь?)

a(b{3})

a(b{2, })

a(b{2,4})

Чему соответствует а, аЬ, abb, ... ab, abb, abbb,... a или ab

abbb

abb, abbb, abbbb,... abb,abbb, abbbb

Атомарная конструкция представляет собой последовательность символов, часть из которых имеет специальное назначение, а часть интерпретируется буквально. Метасимвол . соответствует произвольному символу. Метасимвол обозначает начало строки, а метасимвол $ - ее конец. Если необходимо отменить интерпретацию специального символа, поставьте перед ним обратную косую черту. Разрешается группировать конструкции с помощью круглых скобок, чтобы все выражение в скобках стало атомарной конструкцией.

Квадратные скобки предназначены для задания диапазона возможных значений. Эти значения могут быть просто перечислены через запятую, но можно также указать начало и конец непрерывного диапазона, разделив их символом -. Если выражение в скобках начинается с символа , то этому выражению соответствует все, что не входит в заданный диапазон. Обратите внимание на двойственность символа .

Помимо списков и диапазонов в квадратных скобках можно указывать классы символов. Имена классов окружаются двоеточиями, например [:alpha:], что значит все символы алфавита . Допустимые классы таковы: alnmn, alpha, blank, cntrl, digits punct, space, upper иxdigit.

Наконец, есть два специальных шаблона, соответствующих началу и концу слова: [:<:] и [:>:]. Под словом здесь понимается произвольная последовательность алфавитно-цифровых символов и знаков подчеркивания. В табл. 10.7 показаны примеры различных регулярных выражений, в том числе с квадратными скобками.

Регулярное выражение

[а-с]*х$

Чему соответствует

Люба вольная строка, начинающаяся с аи заканчивающаяся на с: аас, аЬс, асе и т.д.

Любая строка, начинающаяся с а

Любая строка, содержащая буквы a, и с и заканчивающаяся н: х, ах аЬх и т.д.



1 ... 36 37 38 [ 39 ] 40 41 42 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика