|
Программирование >> Программный интерфейс приложений
Арифметические операции с операторами + , - и * выполняются со значениями типа 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) Если сравниваются операнды разных типов, выполняется преобразование типа, и эти два выражения могут не быть эквивалентны-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |