На правах рекламы: Кофе кофе edem-caffe.ru/product/coffe/kofe-v-zernah.

ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Спонсор статьи: Туры на майские праздники 2017 по Украине yastrub-tour.com.ua.

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


28-12-2009

При обработке запросов SELECT, вы обязательно почувствуете благодарность всем операторам сравнения MySQL, которые позволяют сравнивать левые и правые части выражений. Результатом такой операции сравнения всегда является 1 (истина), 0 (ложь) или NULL (невозможно определить).
В табл. 6.2 дается перечень различных операторов сравнения, имеющихся в MySQL.
Операторы сравнения
Эти операторы сравнения могут использоваться для сравнения как чисел, так и строк. Числа сравниваются как вещественные значения, а строки - без учета регистра (если, конечно, не используется ключевое слово BINARY, но об этом подробнее во врезке "Тонкости двоичного мира"). Кроме того, как упоминалось в предыдущем разделе, MySQL обладает интеллектом, позволяющим производить автоматическое преобразование чисел в строки (и наоборот) по принципу "если надо". (Подробнее об этом можно узнать во врезке "Искусственный интеллект"). Рассмотрим следующий пример, в котором проиллюстрировано, как в различных ситуациях MySQL обрабатывает числа из строк.
Операторы сравнения
Искусственный интеллект
Внутренне MySQL представляет узлы дерева синтаксического разбора как объект класса, производного от класса Item. Класс Item имеет три метода оценки: longlong Item::val_int(),double Item::val() и string* Item:: val_str(String* buf). Первый из них оценивает узел выражения в контексте 64-битовых целых чисел, второй - в контексте вещественных чисел, а третий - в контексте символических строк. Родительский узел управляет контекстом оценки непосредственных потомков, вызывая соответствующий метод Item при вычислении подвыражений, и MySQL пытается выработать наиболее интуитивное и совместимое со стандартами решение в каждом конкретном случае выбора контекста.
Операторы сравнения
 126 Часть II. Применение
Альтернативой оператору = является оператор <>, который используется для проверки неравенства двух частей выражения, возвращая значение "истина", если они являются таковыми, и "ложь" - если не являются.
Операторы сравнения
Тонкости двоичного мира
Так как по умолчанию MySQL сравнивает строки без учета регистра букв, выражение 'a' = 'A' в результате даст значение "истина". При необходимости осуществлять сравнение с учетом регистра, MySQL позволяет добавить ключевое слово BINARY, которое сообщает MySQL, что следующую за ним строчку необходимо обрабатывать двоичным образом. В реальном мире это означает, что при обработке операций сравнения, MySQL будет учитывать регистр. Это и демонстрирует следующий пример:
Операторы сравнения
 Ключевое слово BINARY в MySQL является одной из производных форм функции CAST(). Функция CAST() детально описывается в следующей главе. Операторы <=, >= и > используются для проверки того, является ли левая сторона выражения, соответственно, меньше или равна, больше или равна или больше по сравнению с правой стороной выражения. 
Операторы сравнения
Фактор места
Необходимо заметить, что при выполнении операций сравнения, MySQL не учитывает завершающие пробелы, символы табуляции и перевода строки. Поэтому выражения
'zebra' = 'ZEBRA'
и
'zebra' = 'ZEBRA '
являются равносильными и оба возвращают значение "истина". Однако ведущие пробелы, символы табуляции и переводы строк, учитываются при сравнении, т.е. проверка выражений 'zebra' = 'ZEBRA' и
'zebra' = ' ZEBRA' не даст одинаковых результатов.
Оператор BETWEEN предназначен для проверки принадлежности значения (или выражения) указанному диапазону (см. листинг 6.23).
Операторы сравнения
Операторы сравнения
Операторы сравнения
И тут возникает очень важный вопрос: как можно проверить наличие или отсутствие реальных значений NULL в выражении? Ответ дают операторы IS NULL и IS NOT NULL, которые и были разработаны для выполнения операций сравнения с учетом значений NULL.
Рассмотрим следующий пример, демонстрирующий использование оператора IS NULL для проверки наличия пустых значений.
Операторы сравнения
Из этого примера видно, что только значения NULL возвращают значение "истина" из проверки IS NULL. Обратите внимание на последнее выражение из этого примера: несмотря на то, что выражение 1=NULL содержит целое число 1, все выражение оценивается как NULL (из-за того, что внутри его имеется значение NULL), поэтому тест IS NULL возвращает положительный результат.
Но справедливо и обратное (имеется в виду оператор IS NOT NULL).
Операторы сравнения
Еще можно воспользоваться специальным оператором <=>, который в руководстве по MySQL называется "оператором равенства, обрабатывающим NULL-значения". Это значит, что в противоположность обычному поведению, MySQL возвратит "истинный" или "ложный" результат при проведении операции сравнения даже тогда, когда выражения, задействованные в операции, будут содержать значение NULL. Следующий пример наглядно иллюстрирует этот факт.
Операторы сравнения
Операторы сравнения
Кстати, в последующих главах вы увидите, насколько эти возможности используются при обработке MySQL столбцов, содержащих значения NULL.
Операторы сравнения
Как видите, в отличие от многих языков программирования, MySQL делает четкое различие между пустой строкой и значением NULL. И это не просто случайность, а составная часть стандарта MySQL. Но будьте внимательны - это обычно вызывает беспокойство у новичков!
При групповом поиске данных рекомендуется использовать возможности оператора LIKE. Он позволяет производить поиск записей, соответствующих всей или какой-то составляющей части строки, благодаря специальным групповым символам в выражении.
Рассмотрим соответствующий пример.
Операторы сравнения
В этом случае групповой символ "%" сообщает MySQL о том, что нужны строки, содержащие ноль или больше включений подстроки "ll". Например, "hello", "hell", "ball" и т. д. Для поиска строго одного символа вместо последовательности символов используется групповой символ "_", как в следующем примере.
Операторы сравнения

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Операторы MySQL Все о MySQL. Операторы сравнения. Продолжение.