Как уже отмечалось в кратком курсе SQL в главе 4, "Основы SQL", такие опера--1- X/ торы, как SELECT, могут использовать операторы сравнения и логические операторы SQL для выборки только тех записей, которые удовлетворяют заданному условию или набору условий. Эти операторы SQL существенно повышают гибкость языка, позволяя строить сложные выражения и конструкции, упрощающие сложный поиск и операции сравнения и преобразования с данными, размещенными в таблицах баз данных MySQL.
В этой главе вы познакомитесь с различными операторами, узнаете обо всех их возможностях, подтвержденных множеством примеров, - это операции вычисления и сравнения, создание условных выражений, поиск по регулярным выражениям в строках и преобразование типов.
MySQL имеет более 25 операторов, каждый из которых предназначен для выполнения определенной задачи. Эти операторы можно классифицировать в соответствии с выполняемой ими функцией на четыре категории:
■ арифметические операторы;
■ операторы сравнения;
■ логические операторы;
■ операторы выполнения побитовых операций.
В следующих разделах все эти категории будут проанализированы детальнее. Что в имени твоем?
Интересная деталь: в мире MySQL разница между операторами и функциями заключается только в семантике. Функция вызывается по имени с указанием заключенных в скобки аргументов, в то время как оператор предваряется одним или более специальных символов, и при этом аргументы указываются между ними или с любой стороны оператора. MySQL обрабатывает функции и операторы одинаково.

Арифметические операторы
Как и большинство языков программирования, MySQL поддерживает наиболее общие арифметические операции, позволяющие производить вычисления в процессе выборки данных. Все арифметические операторы перечислены в табл. 6.1.
Операторы MySQL
Итак, начнем с простейших: сложение и вычитание. Оператор "+", как показано в следующих примерах, используется для определения суммы двух и более значений.
Операторы MySQL
Операторы MySQL
Разные точки зрения
Как вы, наверное, заметили, MySQL позволяет использовать операторы SELECT с произвольными значениями. В отличие от MySQL, СУБД Oracle этого делать не позволяет, а при выборке требует значений, которых нет в таблицах использования специального синтаксиса FROM DUAL.
Деление на ноль возвращает значение NULL.
Операторы MySQL
Необходимо заметить, что все математические операции, в которых задействованы целые числа, вычисляются с применением 64-разрядной точности. Числа, лежащие вне этого диапазона, скорее всего, дадут неожиданный результат, что видно из следующего примера.
Операторы MySQL
Далее, числа, представленные строками автоматически, преобразуются в числа для выполнения вычислений. MySQL при выполнении этого преобразования следует двум основным правилам.
■ Если в арифметической операции используется строка с ведущим числом, эта строка преобразуется в это число.
■ Если строка, содержащая комбинацию символов и цифр, не может быть корректно преобразована в число, она преобразуется в ноль.
Операторы MySQL
А теперь перейдем от теории к практике и посмотрим, как это все работает в реальных примерах. Рассмотрим следующую простую таблицу MySQL, в которой перечислены се­бестоимость (себестоимость производства - столбец CTM), цена реализации (затраты на покупку для розничного продавца или CTR), розничная цена (цена, по которой товар отпускается покупателям или CTC) и текущее состояние склада компании, специализирующейся на производстве игрушек.
Операторы MySQL
А теперь могут пригодиться арифметические операторы при выполнении вычислений на исходных данных - например, для определения размера прибыли производителя по каждому наименованию товара.
Операторы MySQL
А хотите узнать, насколько возрастает цена товара с того момента, когда он покидает производителя и до момента, когда его покупает покупатель? Обратите внимание, что следующий листинг показывает как абсолютные показатели, так и относительные.
Операторы MySQL
Операторы MySQL