WHILE (Transact-SQL) — SQL Server
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
- Чтение занимает 2 мин
Область применения: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)
Ставит условие повторного выполнения SQL-инструкции или блока инструкций. Эти инструкции вызываются в цикле, пока указанное условие истинно. Вызовами инструкций в цикле WHILE можно контролировать из цикла с помощью ключевых слов BREAK и CONTINUE.
Синтаксические обозначения в Transact-SQL
Синтаксис
-- Syntax for SQL Server and Azure SQL Database WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE }
-- Syntax for Azure Azure Synapse Analytics and Parallel Data Warehouse WHILE Boolean_expression { sql_statement | statement_block | BREAK }
Примечание
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
Boolean_expression
Выражение, возвращающее значение TRUE или FALSE. Если логическое выражение содержит инструкцию SELECT, инструкция SELECT должна быть заключена в скобки.
{sql_statement | statement_block}
Любая инструкция или группа инструкций Transact-SQL, определенная в виде блока инструкций. Для определения блока инструкций используйте ключевые слова потока управления BEGIN и END.
BREAK
Приводит к выходу из ближайшего цикла WHILE. Вызываются инструкции, следующие за ключевым словом END, обозначающим конец цикла.
CONTINUE
Выполняет цикл WHILE для перезагрузки, не учитывая все инструкции, следующие после ключевого слова CONTINUE.
Если вложенными являются два цикла WHILE или более, внутренний оператор BREAK существует до следующего внешнего цикла. Все инструкции после окончания внутреннего цикла выполняются в первую очередь, а затем перезапускается следующий внешний цикл.
Примеры
A. Использование ключевых слов BREAK и CONTINUE внутри вложенных конструкций IF…ELSE и WHILE
В следующем примере в случае, если средняя цена продуктов из списка меньше чем $300
, цикл WHILE
удваивает цены, а затем выбирает максимальную. В том случае, если максимальная цена меньше или равна $500
, цикл WHILE
повторяется и снова удваивает цены.
$500
, затем выполнение цикла WHILE
прекращается, о чем выводится соответствующее сообщение.USE AdventureWorks2012; GO WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300 BEGIN UPDATE Production.Product SET ListPrice = ListPrice * 2 SELECT MAX(ListPrice) FROM Production.Product IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 BREAK ELSE CONTINUE END PRINT 'Too much for the market to bear';
Б. Применение инструкции WHILE в курсоре
@@FETCH_STATUS
для управления действиями курсора в цикле WHILE
.DECLARE @EmployeeID as NVARCHAR(256) DECLARE @Title as NVARCHAR(50) DECLARE Employee_Cursor CURSOR FOR SELECT LoginID, JobTitle FROM AdventureWorks2012.HumanResources.Employee WHERE JobTitle = 'Marketing Specialist'; OPEN Employee_Cursor; FETCH NEXT FROM Employee_Cursor INTO @EmployeeID, @Title; WHILE @@FETCH_STATUS = 0 BEGIN Print ' ' + @EmployeeID + ' '+ @Title FETCH NEXT FROM Employee_Cursor INTO @EmployeeID, @Title; END; CLOSE Employee_Cursor; DEALLOCATE Employee_Cursor; GO
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
В.
Простой цикл While$300
, цикл WHILE
удваивает цены, а затем выбирает максимальную. В том случае, если максимальная цена меньше или равна $500
, цикл WHILE
повторяется и снова удваивает цены. Этот цикл продолжает удваивать цены до тех пор, пока максимальная цена не будет больше, чем $500
, после чего выполнение цикла WHILE
прекращается.-- Uses AdventureWorks WHILE ( SELECT AVG(ListPrice) FROM dbo.DimProduct) < $300 BEGIN UPDATE dbo.DimProduct SET ListPrice = ListPrice * 2; SELECT MAX ( ListPrice) FROM dbo.DimProduct IF ( SELECT MAX (ListPrice) FROM dbo.DimProduct) > $500 BREAK; END
См. также
ALTER TRIGGER (Transact-SQL)
Язык управления потоком (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
Курсоры (Transact-SQL)
SELECT (Transact-SQL)
Операторы PHP: If, Else и If-Else | by Roman | NOP::Nuances of Programming
В этом руководстве мы поговорим об операторах if
, else
и if else
. Это наиболее часто используемые условные операторы, умелое управление которыми считается одним из важнейших навыков в программировании.
Часто при написании кода необходимо выполнить разный код в зависимости от условий. Для этого случая и нужны условные операторы.
В PHP используются следующие условные операторы:
- if: выполнить определенный код, если некоторое условие истинно;
- else: если определенное условие(я) не истинно(ы), выполнить этот код;
- if else: если вышеуказанное условие(я) не истинно(ы), выполнить этот код;
- switch: в зависимости от значения переменной выполнить какой-то конкретный код.
Оператор if используется для принятия решений.
Синтаксисif(condition)
{
//Код для выполнения (если условие истинно)
}
В приведенном выше примере внутри скобки находится условие, которое нужно проверить на истинность; если условие истинно, следует выполнить код внутри этих скобок {}
.
Допустим, мы хотим написать оператор if
, чтобы убедиться, что $a
не равно 0
.
<?phpРезультат(Переменная не может быть равна нулю)
$a = 0;
if($a==0)
{
echo "the variable cannot be zero";
}
?>
Обратите внимание на то, используете ли вы оператор ==
корректно. Помните: если вы хотите проверить, равно ли что-то чему-то, вы должны использовать знак ==
; одинарный знак равенства =
означает в PHP присвоение.
Внутри фигурных скобок вы можете написать столько кода, сколько захотите. Здесь нет ограничений на количество выполняемого внутри скобок кода.
Выше мы разобрали случай, когда нам надо было выполнить определенный код при истинности некоторого условия. А что если требуется выполнение кода, когда условие не является истинным?
В этом случае нужно использовать оператор else
.
Задача оператора else
состоит в том, чтобы выполнять код, когда ни одно из условий if
не является истинным.
Например:
<?php
if()
{}
else
{}
?>
Приведенный выше код проверит, равно ли $a
0
. Если равно, то он покажет сообщение your variable cannot be equal to zero
“ваша переменная не может быть равна нулю”. Если нет, то будет выведено сообщение good job
.
Итак, мы узнали назначение и способ действия операторов if
и else
.
Однако у нас есть проблема: если вы используете только оператор if else
, перед вами всего лишь два варианта развития событий:
- либо вы выполняете условие, и тогда происходит что-то одно;
- либо вы не выполняете условие, и происходит что-то другое.
А если мы хотим проверить более одного условия?
Допустим, нам нужно проверить значение A
. Если $a
равно 0
, выполняется блок кода A
. Если $a
находится в диапазоне от 1 до 20
, выполняется блок кода B
. Если $a больше 20
, выполняется блок кода C
. А если $a
не равно ни одному из вышеперечисленных условий, выполняется блок кода D
.
<?phpРезультат
$a=0;
if($a==0)
{
echo "good";
}
else if ($a >=1 && $a<=20)
{
echo "great";
}
else if($a>20)
{
echo "excellent";
}
else
{
echo "no good";
}
?>
Следует отметить один маленький момент: нет никакой разницы между написанием else if
или elseif
: и то, и другое означает абсолютно одно и то же.
Почему же иногда нужно использовать else if
, а не просто if
?
Эти два оператора не идентичны, и если сделать неправильный выбор, это может сказаться на работе программы.
Если вы используете else if
, то при совпадении одного из условий не проверяются другие условия и работа оператора прекращается.
Пример:
<?php
$a=22;
if($a==22)
{
echo "the variable is equal to 22";
echo "<br>"
}
else if($a%2==0)
{
echo "the variable is an even number";
}
else
{
echo "the variable is neither equal to 22 or an event number";
}
?>
В приведенном выше примере мы установили $a
равным 22
. Но 22 — это четное число, поэтому оно также соответствует второму условию. Однако программа не будет продолжать проверку дополнительных условий в цикле.
Другое дело, если бы мы написали код следующим образом:
<?php
$a=22;
if($a==22)
{
echo "the variable is equal to 22";
echo "<br>"
}
if($a%2==0)
{
echo "the variable is an even number";
}
else
{
echo "the variable is neither equal to 22 or an event number";
}
?>
Здесь два дополнительных оператора if
означают, что будет проверено второе условие — является ли $a
четным или нет. Следовательно, второй блок кода будет выполнен, в отличие от первого примера.
Читайте также:
- Как находить уязвимости в коде на PHP?
- Java убьет ваш стартап. PHP спасёт его
- Как подключить базу данных MySQL к сайту на PHP
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Eric Tam: PHP If, Else and If-Else Statements
Оператор условия if-else для PHP. Урок 6
Сегодня вы научитесь в PHP создавать условия с помощью оператора if-else.
С помощью условий вы можете сделать проверку данных, выводить сообщения при созданном вами условии, перенаправлять пользователя на секретную страницу и т.д.
В конструкции if-else (если-иначе) ничего сложного нет, главное понять, как правильно писать условия, чтобы скрипт их исполнил. Все это, немного, похоже на нашу жизнь. Вот, например:
Вам на работу нужно вставать с понедельника по пятницу в 6:30. Что вы делаете? Вы заводите будильник. Условие, значит, будет таким: если сегодня понедельник – пятница и время 6:30, звонит будильник, мы встаем и делаем определенные действия (одеваемся, пьем кофе с бутербродом, чистим зубы, умываемся и идем на работу).
Как видите простой вид условий — «если, то», если понедельник 6:30, то едем на работу.
Оператор PHP — if
Еще раз закрепим то, что я говорил выше и попробуем по этой схеме на картинке написать код:
<html> <head> <title>основы php на BlogGood.ru</title> </head> <body> <?php $name = "bloggood.ru"; if ( $name == "bloggood.ru" ) { echo "Рад видеть вас на моем блоге $name!<br />"; } echo "С уважением, автор блога Костаневич С.В."; ?> </body> </html>
Сохраните как «if.php» в папку «test-1» локального сервера (см. урок 1).
Введите в браузере адрес:
https://localhost/test-1/if. php
Результат:
Разъяснение:
Обратите внимание, в условиях мы сравнили переменную $name со значением «bloggood.ru». То есть, в условии написали, что если переменная $name равна «bloggood.ru», кстати, знак равенства обозначается двойным знаком равенства (==), тогда это условие является истиной, а если условие истина, тогда выводится действие. Я в действиях написал вот этот код:
echo «Рад видеть вас на моем блоге $name!<br />»;
Я думаю, здесь разобрались.
На заметку:
== – равенство. Пример: if ($a == $b).
!= – не равенство. Пример: if ($a != $b).
= – присвоить. Пример: $a = 1.
Оператор условия if-else
С простым условием мы разобрались, это было не сложно, но теперь усложним немного задачу. Вернемся к нашему примеру:
С понедельника по пятницу в 6:30 вы как обычно по будильнику встаете и идете на работу, но, если сегодня суббота или воскресенье, значит, будильник звонить не будет и вы будете выполнять другие действия.
Вернемся теперь к примерам PHP и попробуем по этой схеме написать код:
<html> <head> <title>основы php на BlogGood.ru</title> </head> <body> <?php $name = "bloggood.ru"; $n = "bloggood.ru"; if ( $name == $n ) { echo "Рад видеть вас на моем блоге $name!<br />"; } else { echo "действие ложное<br />"; } echo "С уважением, автор блога Костаневич С.В."; ?> </body> </html>
Сохраните как «if-else.php» в папку «test-1» локального сервера (см. урок 1).
Введите в браузере адрес:
https://localhost/test-1/if-else.php
Результат:
Как видите, переменная $name и $n равны. Значит, условие является истиной.
$name = «bloggood.ru»;
$n = «bloggood.ru»;
if ( $name == $n )
Давайте поменяем значение и сделаем условие ложным, для этого поменяйте в переменной значение, например, так:
$name = «bloggood. ru»;
$n = «blog»;
if ( $name == $n )
можно и вот так:
$name = «bloggood.ru»;
$n = «bloggood.ru»;
if ( $name != $n )
Теперь напишем PHP-код:
<html> <head> <title>основы php на BlogGood.ru</title> </head> <body> <?php $name = "bloggood.ru"; $n = "blog"; if ( $name == $n ) { echo "Рад видеть вас на моем блоге $name!<br />"; } else { echo "действие ложное<br />"; } echo "С уважением, автор блога Костаневич С.В."; ?> </body> </html>
Результат:
Разъяснение:
В условиях мы сравнили переменную $name с переменной $n. Когда в переменных было одинаковое значение, а в условиях стоял знак равенства (==), условие было истинным, работала эта часть кода:
{
echo «Рад видеть вас на моем блоге $name!<br />»;
}
Как только мы поменяли значение в переменных, условие стало ложным, и в работу запустилась другая часть кода:
else
{
echo «действие ложное<br />»;
}
Вот и все! В следующем уроке мы перейдем к более сложным примерам. В следующем уроке вы узнаете про двойные условия и вложенные конструкции if-else. Подписывайтесь на обновление блога, чтобы не пропустить новые статьи про PHP.
Еще раз на заметку!
Знаки по пройденному материалу:
== – знак равенства. Пример: if ($a == $b).
!= – знак не равенства. Пример: if ($a != $b).
= – знак присвоить. Пример: $a = 1.
Код-шаблон для условий:
if ( условие )
{
действие при истинном условии;
}
else
{
действие при ложном условии;
}
До скорых встреч!
Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓
Последние новости категории:
- Работа с файлами PHP (продолжение). Урок 18
- Работа с файлами PHP: удаление, копирование, переименование файлов. Урок 17 (продолжение)
- Работа с файлами PHP: создание, открытие, отображение, запись, закрытие и удаление файлов. Урок 16
- Функции List, Isset, Unset, Date, Count и Exit на PHP. Урок 15
Добавить комментарий
Метки: php, основы
Операторы MySQL If-Then
Объявление ‘IF’ часто используется в сохраненных программах в MySQL, которые применяют простую условную конструкцию. Оператор IF-THEN позволяет выполнять ряд операторов SQL на основе заданного условия. Это дает True, False или NULL в качестве одного из трех значений. В этом руководстве мы поймем, как обработать часть команды SQL относительно заданного условия с помощью оператора MySQL IF-then.
Синтаксис:
>> IF условие THEN операторы END IF;
В следующем синтаксисе:
- ЕСЛИ: Это’ ключевое слово для запуска условия.
- Условие : После предложения «IF» необходимо выполнить ограничение.
- Утверждения : Может быть любой частью кода, например, выбрать, получить, обновить, удалить. Если условие оценивается как ИСТИНА, то будут выполнены операторы после предложения «THEN».
- ENDIF: Это конец предложения «IF». После него власть переносится на следующий пункт.
Давайте начнем разбираться, если-то, запустив командную оболочку MySQL. Введя пароль, мы готовы к работе.
Пример 01: Функция MySQL IF():
Чтобы узнать об операторе If, мы должны сначала протестировать функцию IF(). В приведенном ниже примере мы определили функцию IF() в запросе SELECT и дали ей условие, чтобы проверить, больше ли 2, чем 9 или нет. Если условие допустимо, оно вернет первое значение после условия; иначе второй. Поскольку наше условие недействительно, поэтому оно возвращает «ложь».
Предположим, что таблица «порядок» показана на приложенном изображении.
>> SELECT * FROM data.order;
Давайте посмотрим на функцию IF(), выполняемую для этой таблицы. Мы выбрали три столбца. Если столбец «Статус» имеет значение «Оплачено», то метод IF() вернет «Отлично», в противном случае — «Плохо». Возвращаемое значение функции IF() будет сохранено во вновь созданном во время выполнения столбце «Примечания». Теперь мы можем видеть вывод, как показано ниже.
Пример 02: Оператор MySQL IF-THEN
Мы попробовали функцию IF() в командной строке MySQL. Давайте попробуем новый пример оператора IF-Then в графическом интерфейсе MySQL при использовании процедур. Откройте MySQL Workbench 8.0 и сначала подключитесь к базе данных.
Мы работали над базой данных «данные»; затем вы должны указать команду «использовать данные», чтобы использовать ее в Workbench. Нажмите значок вспышки, чтобы выполнить его. Вы должны знать, что операторы If-then работают с процедурами хранения, как показано ниже. Мы объявили разделитель ключевых слов для запуска процедуры сохранения. Процедура myResult принимает два аргумента. После оператора BEGIN у нас есть оператор IF, который проверяет условие. Если условие выполняется, то будет выполнена команда «THEN» и ее следующий оператор. Если условие становится ложным, то будут реализованы операторы после «END IF».
Поскольку процедура myResult принимает два аргумента, мы должны передать ей два значения.
После передачи значений в процедуру хранения мы должны вызвать процедуру, чтобы увидеть результаты оператора If-then.
И результат приведен ниже. Он вычислил Discount_rate с помощью оператора If-then.
Если вы хотите снова использовать ту же хранимую процедуру, вы должны сначала удалить эту процедуру с помощью приведенной ниже команды DROP, а затем выполнить ее снова.
Пример 03. Оператор MySQL IF-THEN-ELSE
Давайте перейдем к более широкому уровню. На этот раз мы рассмотрим оператор IF-Then-Else, используя хранимую процедуру в нашем примере. Взгляните на приведенную ниже таблицу «студент» с некоторыми полями.
>> SELECT * FROM data.student;
Прежде всего, вы должны использовать базу данных «данные», чтобы использовать таблицу «студент» в нашей процедуре хранения. Для этого введите приведенную ниже команду в терминале командной строки MySQL.
>> использовать данные;
Теперь объявите разделитель, а затем начните писать процедуру сохранения. Команда CREATE будет использоваться для объявления или создания процедуры, как обычно. Процедура «details» принимает два аргумента. После этого процедура сохранения начинается с ключевого слова BEGIN. Слово «DECLARE» использовалось для определения переменной «Sub» для субъектов. Запрос «SELECT» использовался для выбора значений столбца «Subject» из таблицы «student» и сохранения их во вновь объявленной переменной «Sub». Предоставленное пользователем значение «S_Subject» будет сравниваться со значением столбца «Subject». В операторе «IF», если предоставленное пользователем значение «S_Subject» совпадает со значением столбца «Subject», тогда будет выполнен относительный оператор «THEN» вместе с его операторами внутри. Эта процедура будет обрабатываться от первого оператора «IF» ко второму, а затем к третьему оператору «ELSEIF». Если последняя часть «ELSEIF» не совпадает со значением, предоставленным пользователем, управление будет передано оператору «END IF».
Давайте завершим разделитель приведенной ниже командой.
Мы должны вызвать процедуру хранения, выполнив ее с запросом CALL и аргументами в скобках. Поскольку мы указали «Математика» в качестве значения, будет создан новый столбец для вывода операторов «THEN» и «SET».
Давайте проверим вновь созданный столбец «S_Cource» с помощью приведенной ниже команды. Как видите, у нас есть соответствующий результат по курсу «Математика».
Повторно вызвать процедуру, изменив первый аргумент, т. е. субъект. На этот раз мы предоставили тему «Компьютер».
При выборе значения столбца «S_Cource» вы можете видеть, что у нас есть значение, относящееся к теме «Компьютер», то есть «ИТ».
Еще раз, мы вызывали процедуру, как показано ниже, изменяя первый аргумент. На этот раз мы сдали предмет «История».
Вызвав столбец «S_Cource» еще раз, вы увидите, что у нас есть результат «Магистр истории» в отношении недавно предоставленного предмета, например, «История».
Заключение:
Мы выполнили все примеры, необходимые для разработки операторов If-then, например, функцию IF(), простой оператор If-then, оператор If-then-else.
Оператор MySQL IF — javatpoint
следующий → ← предыдущая Оператор IF используется в хранимых программах, реализующих базовую условную конструкцию в MySQL. На основе определенного условия он позволяет нам выполнять набор операторов SQL. Он возвращает одно из трех значений True, False или NULL. Мы можем использовать эту инструкцию тремя способами: IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF-ELSE, а также можем завершить ее с помощью END-IF. Рассмотрим подробно каждое из этих утверждений. Оператор ЕСЛИ-ТОЭтот оператор выполняет набор запросов SQL на основе определенных условий или выражений. Синтаксис оператора IF-THEN следующий: ЕСЛИ условие ТО заявления; КОНЕЦ ЕСЛИ; В приведенном выше синтаксисе мы должны указать условие для выполнения кода. Если оператор оценивается как true, он будет выполнять оператор между IF-THEN и END-IF. В противном случае он выполнит оператор, следующий за END-IF. ПримерБлок IF…ENDIF выполняется с сохраненными программами и заканчивается точкой с запятой, как показано в следующем примере. РАЗДЕЛИТЕЛЬ $$ СОЗДАТЬ ПРОЦЕДУРУ myResult(original_rate NUMERIC(6,2),OUT Discount_rate NUMERIC(6,2)) НЕТ SQL НАЧИНАТЬ ЕСЛИ (исходная_скорость>200), ТО УСТАНОВИТЬ Discount_rate=original_rate*.5; КОНЕЦ ЕСЛИ; выберите скидку_ставка; END$$ РАЗДЕЛИТЕЛЬ $$; Затем возьмите две переменные и установите для них значения, как показано ниже: mysql> установить @p = 600; mysql> установить @dp = 500; Теперь вызовите функцию хранимой процедуры, чтобы проверить вывод. mysql> вызовите myResult(@p, @dp) Мы получим следующий вывод: Оператор IF-THEN-ELSEЕсли мы хотим выполнить другие операторы, когда условие, указанное в блоке IF, не оценивается как истинное, можно использовать этот оператор. Синтаксис оператора IF-THEN-ELSE приведен ниже: ЕСЛИ условие ТО заявления; ЕЩЕ else-операторы; КОНЕЦ ЕСЛИ; В приведенном выше синтаксисе мы должны указать условие для выполнения кода. Если оператор оценивается как true, он будет выполнять оператор между IF-THEN и ELSE. В противном случае он выполнит оператор, следующий за ELSE и END-IF. Давайте изменим вышеприведенную хранимую процедуру myResult() . Итак, сначала удалите хранимую процедуру myResult() с помощью следующей команды: Mysql> Процедура DROP myResult; Затем напишите для этого новый код, как показано ниже: РАЗДЕЛИТЕЛЬ $$ СОЗДАТЬ ПРОЦЕДУРУ myResult(original_rate NUMERIC(6,2),OUT Discount_rate NUMERIC(6,2)) НЕТ SQL НАЧИНАТЬ ЕСЛИ (исходная_скорость>200), ТО УСТАНОВИТЬ Discount_rate=original_rate*. 5; ЕЩЕ УСТАНОВИТЬ Discount_rate=original_rate; КОНЕЦ ЕСЛИ; выберите скидку_ставка; END$$ РАЗДЕЛИТЕЛЬ ; Затем создайте две переменные и установите для них значения, как показано ниже: mysql> установить @p = 150; mysql> установить @dp = 180; Теперь вызовите функцию хранимой процедуры, чтобы получить результат. mysql> вызовите myResult(@p, @dp) Это даст следующий вывод: Оператор IF-THEN-ELSEIF-ELSEЕсли мы хотим выполнить оператор на основе нескольких условий, можно использовать этот оператор. Синтаксис оператора IF-THEN-ELSE приведен ниже: ЕСЛИ условие ТО заявления; ELSEIF elseif-условие THEN elseif-операторы; … ЕЩЕ else-операторы; КОНЕЦ ЕСЛИ; В приведенном выше синтаксисе, если условие становится истинным, выполняется ветвь IF-THEN. В противном случае он будет оценивать elseif-условие. Когда условие elseif становится истинным, выполняется оператор elseif. Если это условие также ложно, оно будет оценивать следующее elseif-условие. Таким образом, здесь мы будем оценивать несколько elseif-условий, и если какое-либо условие в IF и ELSE-IF не станет истинным, то будет выполнен оператор ветки ELSE. Давайте изменим приведенную выше хранимую процедуру myResult(). Итак, сначала удалите хранимую процедуру myResult() с помощью следующей команды: Mysql> Процедура DROP myResult; Затем напишите для этого новый код, как показано ниже: РАЗДЕЛИТЕЛЬ $$ СОЗДАТЬ ПРОЦЕДУРУ myResult(original_rate NUMERIC(6,2),OUT Discount_rate NUMERIC(6,2)) НЕТ SQL НАЧИНАТЬ ЕСЛИ (исходная_скорость>500), ТО УСТАНОВИТЬ Discount_rate=original_rate*.5; ИНАЧЕ ЕСЛИ (исходная_ставка<=500 И исходная_ставка>250), ТО УСТАНОВИТЬ Discount_rate=original_rate*.8; ЕЩЕ УСТАНОВИТЬ Discount_rate=original_rate; КОНЕЦ ЕСЛИ; выберите скидку_ставка; END$$ РАЗДЕЛИТЕЛЬ ; Затем создайте две переменные и установите для них значения, как показано ниже: mysql> установить @p = 150; mysql> установить @dp = 150; Теперь вызовите функцию хранимой процедуры, чтобы получить результат. mysql> вызовите myResult(@p, @dp) Это даст следующий вывод: Следующая темаMySQL И условие ← предыдущая следующий → |
Понимание функции MySQL IF() — с примерами.
Условная логика является неотъемлемой частью практически любого приложения. Большинство языков программирования поддерживают некоторую форму конструкции if/else. MySQL — это диалект SQL, который является декларативным языком. Но он также включает поддержку условного потока, как и другие языки, такие как Python, PHP и Java. В этом сообщении блога я рассмотрю функцию IF() для , аналогичную типу if/else.
Фото Джона Тайсона на UnsplashПримечание. Все данные, имена или имена, найденные в базе данных, представленной в этом посте, используются строго для практики, обучения, обучения и тестирования. Он ни в коем случае не отображает фактические данные, принадлежащие или используемые какой-либо стороной или организацией.
Используемые ОС и БД:
- Xubuntu Linux 16.04.5 LTS (Xenial Xerus)
- MySQL 8.0.13
Я буду использовать эту таблицу и данные:
1 |
Хочу подчеркнуть, что я не обязательно буду демонстрировать или охватывать IF
/ ELSE
в этом сообщении блога, но вместо этого изучите саму функцию IF()
; исследуя его манеры и причуды (есть пара, о которой нужно знать).
Давайте установим определяемую пользователем переменную сеанса со значением id
для имени «Шелли» для использования в этом примере: более глубоко. )
1 | mysql> SET @Shelly_id := 0; mysql> ВЫБРАТЬ id INTO @Shelly_id FROM name WHERE first_name = ‘Shelly’; |
При вызове функции IF()
вы предоставляете ей 3 аргумента (или выражения). Давайте посмотрим на это в действии, а затем рассмотрим, как это работает.
Ниже я указываю @Shelly_id
в качестве первого аргумента, предоставляя строки в качестве аргументов 2 и 3. В зависимости от того, как оценивается первый аргумент, будет возвращен один из этих двух оставшихся аргументов.
1 | mysql> SELECT IF(@Shelly_id = 4, ‘Это принадлежит Шелли’, ‘Не принадлежит Шелли’) AS return_message; |
В этом первом примере поскольку переменная @Shelly_id
не равна 4, это выражение считается FALSE
и возвращается третье выражение.
Но когда мы сравниваем переменную @Shelly_id
с 8, это выражение равно TRUE
, что возвращает второе выражение, как показано ниже:
1 | mysql> SELECT IF(@Shelly_id = 8, ‘That is Shelly»s’, ‘Does not belong to Shelly’ ) КАК возвращенное_сообщение; |
Довольно простая концепция, верно? Но есть пара скрытых нюансов, о которых следует знать.
Я буду ОБНОВЛЯТЬ
идентификатор
для «Шелли» ниже:
1 mysql> SELECT * |
Восстановим @Shelly_id
и присвойте ей обновленное значение столбца с синтаксисом SELECT INTO
(посетите мою запись в блоге MySQL SELECT INTO Syntax Part 1 — Uses With Variables, чтобы узнать больше об этом типе назначения переменных):
1 mysql> ВЫБЕРИТЕ id INTO @Shelly_id ИЗ имен, ГДЕ first_name = ‘Шелли’; mysql> SELECT @Shelly_id; |
Теперь обратите внимание на следующие запросы.
1-е условное выражение равно TRUE
, поэтому возвращается 2-е выражение. Здесь нет ничего нового.
1 | MySQL> SELECT IS (@Shelly_ID = 0, ‘, что это не так. ID Шелли’) AS return_message; |
В следующем ниже, 1-е выражение является значением @Shelly_id
переменная, которая равна 0. Однако здесь нет сравнения. И значение 0 всегда будет возвращать третье выражение.
1 | mysql> SELECT IF(@Shelly_id, ‘That is Shelly»s new id now’, ‘That is not Shelly’ ‘id’) AS return_message; |
Далее, начиная с @Shelly_id
переменная не равна равной 8 (помните, что она равна 0), 1-е выражение здесь (см. ниже) считается ИСТИНА
, возвращая 2-й аргумент 3.
1 | . не идентификатор Шелли’) AS return_message; |
На обороте , 1-е выражение здесь оценивается как FALSE
, потому что переменная @Shelly_id
в это время равна нулю, что возвращает 3-е выражение.
1 | mysql> SELECT IF(@Shelly_id <> 0, ‘Теперь это новый идентификатор Шелли’, ‘Это не идентификатор Шелли’) AS return_message ; |
Давайте установим @Shelly_id
переменная до NULL
:
1 | mysql> SET @Shelly_id := NULL; mysql> SELECT IF(@Shelly_id IS NULL, ‘Теперь это новый идентификатор Шелли’, ‘Это не идентификатор Шелли’) AS return_message; |
Первое выражение оценивается как TRUE
, возвращая второе, поскольку переменная @Shelly_id
равна NULL
(на данный момент).
В приведенном ниже запросе возвращается 3-е выражение, потому что 1-е оценивается как FALSE
:
1 | MySQL> SELECT IS (@shell не идентификатор Шелли’) AS return_message; |
Но также обратите внимание, что если 1-е выражение NULL
, затем возвращается 3-е выражение:
1 | MySQL> SELECT IF (NULL, это Shellly ‘New Leally’, «Новый идентификатор». s id’) AS return_message; |
Это второе важное отличие переварить. Если выражение 1 равно 0 или NULL
, всегда возвращается третье выражение.
Дополнительное чтение: Функция MySQL IF
Хотя я не привел пример условного потока с IF()
, я надеюсь, что вы возьмете то, что прочитали здесь, изучите и улучшите для своего конкретного случая использования. Я хотел бы услышать об этом в комментариях ниже.
Нравится то, что вы прочитали? Видите что-нибудь неправильное? Пожалуйста, прокомментируйте ниже и спасибо за чтение!!!
Дополнительные сведения см. в официальном онлайн-руководстве по MySQL 8.0.
Спасибо, что нашли время прочитать этот пост. Я искренне надеюсь, что вы открыли для себя что-то интересное и поучительное. Пожалуйста, поделитесь своими выводами здесь с кем-то из ваших знакомых, кто также получит от этого такую же пользу.
Посетите страницу «Портфолио-Проекты», чтобы увидеть записи в блоге/технические статьи, которые я написал для клиентов.
Я уже упоминал, как сильно люблю кофе?!?!
Чтобы получать уведомления по электронной почте (Никогда не спам) из этого блога («Проза цифровой совы») о последних сообщениях в блоге по мере их публикации, подпишитесь (по собственному желанию), нажав кнопку «Нажмите, чтобы подписаться!» боковая панель на главной странице! (Не стесняйтесь в любое время просматривать страницу Политики конфиденциальности Digital Owl Prose по любым вопросам, которые могут у вас возникнуть: обновления по электронной почте, подписка, отказ, контактные формы и т.