Программирование >>  Программный интерфейс приложений 

1 ... 48 49 50 [ 51 ] 52 53 54 ... 264


Стандарт ANSI языка SQL определяет II как оператор конкатенации строк, но в СУБД MySQL это оператор логического ИЛИ . Вы сильно удивитесь, если будете ожидать от оператора, приведенного ниже, конкатенации строк, а в результате получите 0:

SELECT abc I def -> О

Перед выполнением этой операции строки аЬс и def преобразуются в целые числа, а результат выполнения операции дает 0. Для выполнения конкатенации строк в MySQL используется функция

CONCAT( аЬс , def ) .

Таблица 2.16. Логические операторы Оператор Синтаксис Значение

AND, & & а AND В, а && b Логическое пересечение; дает значение истина ,

если оба операнда имеют значение истина

OR, М а OR В, а 11 b Логическое объединение; дает значение истина ,

если один из операндов имеет значение истина

NOT, I NOTa, !а Логическое отрицание; дает значение истина , ес-

ли операнд имеет значение ложь

Побитовые операции, представленные в табл. 2.17, предназначены для выполнения операций побитового пересечения и объединения, в которых каждый бит результата рассматривается как логическое И или ИЛИ соответствующих битов операндов. Есть операции побитового сдвига влево и вправо. Побитовые операции выполняются с применением целых значений типа BIGINT (64 бит).

Таблица 2.17. Побитовые операторы

Оператор Синтаксис Значение

а&Ь

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

а 1 b

Побитовое объединение; каждый бит результата установлен, если установлен соответствующий бит в одном из операндов

а b

Побитовый сдвиг влево значения из операнда а на ь битов

а b

Побитовый сдвиг вправо значения из операнда а на Ь битов

Часть 1. Использование СУБД MySQL



Операторы сравнения (табл. 2.18) включают операторы сравнения относительных значений и лексофафического порядка чисел и строк, операторы сравнения по шаблону и сравнения с пустыми значениями. Оператор <=> применяется только в СУБД MySQL. Этот оператор был впервые введен только в MySQL 3.23.

Таблица 2.18. Операторы сравнения

Оператор

Синтаксис

Значение

a = b

Истина , если операнды равны

! =, о

a 1= b, a <> b

Истина , если операнды не равны

<

a<b

Истина , если а меньше b

<=

a <=b

Истина , если а меньше или равно Ь

>=

a >= b

Истина , если а больше или равно Ь

>

a > b

Истина , если а больше Ь

a IN (b1, b2, ...)

Истина , если а равно одному из Ы, Ь2 ...

BETWEEN

a BETWEEN b AND с

Истина , если а лежит в диапазоне Ь и с включительно

LIKE

a LIKE b

Истина , если а совпадает с шаблоном b

NOT LIKE

a NOT LIKE b

Истина , если а не совпадает с шаблоном b

REGEXP

a REGEXP b

Истина , если а совпадает с регулярным выражением Ь

NOT REGEXP

a NOT REGEXP b

Истина , если а не совпадает с регулярным выражением Ь

<=>

a <=> b

Истина , если операнды равны (даже если это пустые значения)

IS NULL

a IS NULL

Истина , если операнд имеет пустое значение

IS NOT NULL

a IS NOT NULL

Истина , если операнд не имеет пустого значения

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



abc = Abe -> 1

BINARY abc = Abe -> 0

abc = BINARY Abc -> 0

Оператора, альтернативного оператору binary (not binary), не существует. И, если столбец предполагается использовать как в контекстах, чувствительных к регистру, так и наоборот, задайте тип столбца, который не будет реагировать на регистр, чтобы для сравнений, где необходимо иметь чувствительность к регистру, воспользоваться оператором binary.

Операции всегда будут реагировать на регистр, если в них участвуют

столбцы, объявленные двоичной строкой (типы char binary, varchar

binary И blob). При сравнении таких данных их необходимо приводить к одному и тому же регистру с помощью операторов upper () или lower ():

UPPER(col name) < UPPER( Smith ) LOWER(col name) < LOWER( Smith )

При выполнении операций сравнения строк, нечувствительных к регистру, очень вероятна ситуация, когда несколько символов в зависимости от набора символов будут рассмотрены как эквивалентные. Например, символы Е и Ё могут рассматриваться как подобные при выполнении операций сравнения и сортировки. Двоичные (чувствительные к регистру) операции сравнения производятся с учетом А5СП-значений этих символов.

Проверка по образцу позволяет делать выборку значений, не определяя точно всего значения полностью. В СУБД MySQL это делается с помощью оператора like и щаблона % (все последовательности символов) или щаблона (любой один символ). СУБД MySQL также имеет проверку по образцу с помощью оператора regexp и расщиренного регулярного выражения, аналогичного тому, что имеется в ОС UNIX в программах grep, sed и vi. При проверке по щаблону можно воспользоваться одним из этих операторов, а не =. Для того чтобы инвертировать смысл проверки, воспользуйтесь операторами not like или not regexp.

Два типа проверки по образцу различаются в двух важных аспектах.

Оператор like не реагирует на регистр в том случае, если по крайней мере один из операндов является двоичной строкой. Оператор regexp чувствителен к регистру.

Выборка по образцу в SQL работает тогда и только тогда, когда есть полное совпадение. Выборка по регулярным выражениям работает при совпадении щаблона где-либо в строке.

Шаблоны, работающие с оператором like, могут содержать символы % и Например, по щаблону Frank% будет найдена любая строка, начинающаяся с Frank :

В MySQL 3.23.4 оператор regexp не реагирует на регистр, если ни один из операторов не является двоичной строкой.



1 ... 48 49 50 [ 51 ] 52 53 54 ... 264

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