Вы, наверное, уже знаете о том, что MySQL оснащен функциями, позволяющими выполнять условные операции. Эти функции дают возможность задавать условную логику внутри самого SQL-запроса, позволяя тем самым разработчикам перенести обработку логики на уровень базы данных. Эти функции перечислены в табл. 7.7.
Первая из этих функций - IFNULL() - принимает два аргумента и оценивает первый из них. Если первый аргумент не равен NULL, функция возвращает первый аргумент, а если равен NULL - функция возвращает второй аргумент.
Функция IF() позволяет произвести простейшую условную проверку, аналогичную той, что предусмотрена во многих языках написания сценариев. Эта функция принимает три аргумента, первый из которых является условным выражением, которое будет сравниваться; если оценка выражения дает значение "истина", функция IF() возвращает второй аргумент, если "ложь" - возвращает третий аргумент.
Применение функции IF() уместно только в случае двух возможных исходов. Однако в реальных ситуациях этого может оказаться недостаточно, т.к. часто в условных операторах приходится программировать три и более ветви. Для таких случаев у MySQL предусмотрена функция CASE, работающая аналогично условным конструкциям switch-case в языках программирования PHP и Perl.
Здесь первым аргументом является значение оцениваемого выражения, за которым следует последовательность блоков WHEN-THEN, в каждом из них задается значение, сравниваемое с первым аргументом, и возвращаемый результат в случае "истинности" операции сравнения. Последовательность блоков WHEN-THEN завершается блоком ELSE,
в котором задается результат, принимаемый в случае, если ни в одном из блоков WHEN-THEN не найдено соответствия. Затем следует ключевое слово END, завершающее собой всю конструкцию функции CASE. Если отсутствует блок ELSE и ни в одном из блоков WHEN-THEN не найдено соответствия, MySQL возвращает значение NULL.
Существует еще и альтернативный синтаксис функции CASE, который может очень пригодиться в определенных ситуациях. Вот как он выглядит:
CASE
WHEN (условное выражение 1) THEN (результат 1) WHEN (условное выражение 2) THEN (результат 2) ELSE (результат по умолчанию)
END
В этом случае результат зависит от того, возвращает ли соответствующая условная проверка значение "истина".
Это разъясняют следующие примеры.
Хранящиеся в этой таблице пароли пользователей закодированы с помощью функции ENCRYPT() и специального кода ts.
Итак, возможны два варианта выполнения аутентификации с помощью этой системы: использование бизнес-логики для кодирования и верификации на прикладном уровне или на уровне базы данных MySQL с помощью встроенной функции IF(). Так как эта книга посвящена MySQL, вполне логично, что мы выберем второй вариант.
В данном случае ввод пользователя шифруется функцией ENCRYPT() и обрабатывается функцией IF() , которая выполняет двуединую задачу - проверку пароля и передачу результата приложению. Таким образом нагрузка на приложение существенно уменьшается: вместо того, чтобы выполнять необходимые процедуры шифрования, передавать данные MySQL и проверять их на соответствие, достаточно передать текстовый пароль на MySQL-сервер (через аналогичный вышеупомянутому запрос SELECT), прочесть полученный результат и разрешить доступ или отказать в нем.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Функции управления
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Функции кодировки | Все о MySQL. Функции форматирования |