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

1 ... 186 187 188 [ 189 ] 190 191 192 ... 264


Арифметические операции с операторами + , - и * выполняются со значениями типа BIGINT (64-разрядными целыми значениями), если оба аргумента являются целыми числами Это значит, что при использовании в выражениях больших значений диапазон вычислений 64-разрядных целых чисел может быть превышен, что приведет к получению неожиданного результата:

999999999999999999 * 999999999999999999 -527149226598858751 99999999999 * 99999999999 * 99999999999 -1504485813132150785 18014398509481984 * 18014398 5094 8198 4 *0

В выражениях с операторами / и % значения типа BIGINT используются только в тех случаях, когда в контексте деления результат преобразуется в целое число.

Операторы сравнения

Операторы сравнения возврашают значение 1, если сравнение истинно, или значение О, если сравнение ложно. Сравнивать можно как числа, так и строки. В случае необходимости операнды преобразуются в соответствии со следующими правилами.

При сравнении со значением NULL результат возвращается равным NULL. Единственным исключением из этого правила является оператор <=> . (Этот оператор аналогичен оператору = , однако используется в выражениях типа NULL <=> NULL. Последнее выражение, кстати, истинно.)

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

Если оба операнда являются целыми числами, они сравниваются как целые числа.

Шестнадцатеричные константы, которые не сравнимы с числом, сравниваются как двоичные строки.

Если один из операндов имеет значение типа TIMESTAMP или DATETIME, а другой является константой, операнды сравниваются как значения типа TIMESTAMP. Это правило добавлено для повышения эффективности работы ODBC-приложений.

Если определенное выражение не отвечает ни одному из описанных выше правил, операнды сравниваются как числовые значения с плавающей точкой. Заметьте, это относится также и к операции сравнения строковых и числовых аргументов. Строка перед сравнением преобразуется в число. Результатом этого преобразования является значение О (если строка не является записью числа). Строка 14.3 , например, преобразуется в 14.3, а L4.3 - в 0.



Представленные ниже примеры иллюстрируют данные правила.

2 < 12

2 < 12 О

2 < 12 l

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

При сравнении строк регистр символов не учитывается, если только один из сравниваемых операндов не является двоичной строкой. Следовательно, для выполнения сравнения с учетом регистра необходимо добавить ключевое слово BINARY или задать значения столбцов типов CHAR BINARY, VARCHAR BINARY ИЛИ BLOB.

=. Равен 1, если операнды равны. В противном случае равен 0.

1 = 1 01

1 = 2 =>0

abc = abc =>1

abc = def ОО

abc = ABC Ol

BINARY abc = ABC =>0

BINARY abc = abc abc =0 Ol

Строку abc можно записать и в виде ABC , поскольку при сравнении строк по умолчанию регистр символов не учитывается. Использование оператора BINARY позволит выполнить сравнение с учетом регистра символов. В соответствии с правилами сравнения строка abc при преобразовании в числовое значение становится равной О, поскольку не является строчной записью числа.

<=>. Оператор равенства с учетом значения NULL; подобен оператору = с той лищь разницей, что он равен 1, когда операнды равны, даже если они имеют значение NULL.

1 <=> 1 =>1

1 <=>2 ОО

NULL <=> NULL =>1

NULL = NULL ONULL

Из последних двух примеров видно, как отличается сравнение со значениями NULL у операторов = и <=> .

Оператор <=> впервые появился в MySQL 3.23.0.



ш != или о. Равен 1, если операнды равны, в противном случае равен 0. 3.4 != 3.4

аЬс о abc =>0

binary abc о abc

abc != def 1

ш <. Равен 1, если левый операнд меньше правого операнда. В противном случае равен 0.

3 < 10 1

105.4 < 10е+1 оо

аЬс < abc =>0

abc < def =>!

ш <=. Равен 1, если левый операнд меньше правого операнда либо равен ему. В противном случае равен 0. аЬс <= а 0

а <= аЬс 1

13.5 <= 14 =>!

(3 * 4) - 16 * 2) <= о =>!

ш >=. Равен 1, если левый операнд больше правого операнда либо равен ему. В противном случае равен 0. abc >= а =>!

а >= abc =>0

13.5 >= 14 оо

(3*4) - (6*2) >= о =>!

>. Равен 1, если левый операнд больше правого. В противном случае равен 0.

pi {) > 3 01

abc > а 1

sin(o) > cos(o) =>0

ехрг BETWEEN min and max. Равен 1, если значение min меньше либо равно выражению ехрг и значение max больше либо равно ехрг. Если операнды ехрг, min и max относятся к одному типу, следующие две строки будут эквивалентны:

ехрг between min and max

(min <= ехрг and ехрг <= max)

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



1 ... 186 187 188 [ 189 ] 190 191 192 ... 264

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