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
2
3
4
5
6
7
.
+——+————-+
| идентификатор   | имя_имя |
+——+————-+
| 4 | Гарри      |
| 333 | Томас      |
| 8 | Шелли     |
| 10 | Рики      |
| 99 | Эбби       |
| 99 | Эбби       |
| 100 | Билл       |
+——+————+
7 рядов в наборе (0,00 сек)

Хочу подчеркнуть, что я не обязательно буду демонстрировать или охватывать IF / ELSE в этом сообщении блога, но вместо этого изучите саму функцию IF() ; исследуя его манеры и причуды (есть пара, о которой нужно знать).

Давайте установим определяемую пользователем переменную сеанса со значением id для имени «Шелли» для использования в этом примере: более глубоко. )

1
2
3
4
5

mysql> SET @Shelly_id := 0;
Запрос в порядке, затронуто 0 строк (0,00 с)

mysql> ВЫБРАТЬ id INTO @Shelly_id FROM name WHERE first_name = ‘Shelly’;
Запрос в порядке, затронута 1 строка (0,10 с)

При вызове функции IF() вы предоставляете ей 3 аргумента (или выражения). Давайте посмотрим на это в действии, а затем рассмотрим, как это работает.

Ниже я указываю @Shelly_id в качестве первого аргумента, предоставляя строки в качестве аргументов 2 и 3. В зависимости от того, как оценивается первый аргумент, будет возвращен один из этих двух оставшихся аргументов.

1
2
3
4
5
6
7

mysql> SELECT IF(@Shelly_id = 4, ‘Это принадлежит Шелли’, ‘Не принадлежит Шелли’) AS return_message;
+—————————+
| возвращенное_сообщение          |
+—————————+
| Не принадлежит Шелли |
+—————————+
1 строка в наборе (0,00 с)

В этом первом примере поскольку переменная @Shelly_id не равна 4, это выражение считается FALSE и возвращается третье выражение.

Но когда мы сравниваем переменную @Shelly_id с 8, это выражение равно TRUE , что возвращает второе выражение, как показано ниже:

1
2
3
4
5
6
7

mysql> SELECT IF(@Shelly_id = 8, ‘That is Shelly»s’, ‘Does not belong to Shelly’ ) КАК возвращенное_сообщение;
+——————+
| возвращенное_сообщение |
+——————+
| Это Шелли |
+——————+
1 ряд в наборе (0,00 сек)

Довольно простая концепция, верно? Но есть пара скрытых нюансов, о которых следует знать.

Я буду ОБНОВЛЯТЬ идентификатор для «Шелли» ниже:

1
2
3
4
5
.0002 mysql> ОБНОВЛЕНИЕ имен SET id = 0
    -> ГДЕ first_name = ‘Шелли’;
Запрос выполнен успешно, затронута 1 строка (0,22 с)
Совпало строк: 1  Изменено: 1  Предупреждения: 0

mysql> SELECT *
    -> FROM name
    -> WHERE first_name = ‘Shelly’;
+——+————-+
| идентификатор   | имя_имя |
+——+————-+
| 0 | Шелли     |
+——+————+
1 ряд в наборе (0,00 сек)

Восстановим @Shelly_id и присвойте ей обновленное значение столбца с синтаксисом SELECT INTO (посетите мою запись в блоге MySQL SELECT INTO Syntax Part 1 — Uses With Variables, чтобы узнать больше об этом типе назначения переменных):

1
2
3
4
5
.
Запрос в порядке, затронуто 0 строк (0,00 с)

mysql> ВЫБЕРИТЕ id INTO @Shelly_id ИЗ имен, ГДЕ first_name = ‘Шелли’;
Запрос в порядке, затронута 1 строка (0,00 с)

mysql> SELECT @Shelly_id;
+————+
| @Шелли_ид |
+————+
| 0 |
+————+
1 строка в наборе (0,00 сек)

Теперь обратите внимание на следующие запросы.

1-е условное выражение равно TRUE , поэтому возвращается 2-е выражение. Здесь нет ничего нового.

1
2
3
4
5
6
7

MySQL> SELECT IS (@Shelly_ID = 0, ‘, что это не так. ID Шелли’) AS return_message;
+——————————+
| возвращенное_сообщение            |
+——————————+
| Теперь это новый идентификатор Шелли |
+—————————-+
1 ряд в наборе (0,00 сек)

В следующем ниже, 1-е выражение является значением @Shelly_id переменная, которая равна 0. Однако здесь нет сравнения. И значение 0 всегда будет возвращать третье выражение.

1
2
3
4
5
6
7

mysql> SELECT IF(@Shelly_id, ‘That is Shelly»s new id now’, ‘That is not Shelly’ ‘id’) AS return_message;
+————————-+
| возвращенное_сообщение        |
+————————-+
| Это не идентификатор Шелли |
+—————————————+
1 строка в наборе (0,00 сек)

Далее, начиная с @Shelly_id переменная не равна равной 8 (помните, что она равна 0), 1-е выражение здесь (см. ниже) считается ИСТИНА , возвращая 2-й аргумент 3.

1
2
3
4
5
6
7

. не идентификатор Шелли’) AS return_message;
+——————————+
| возвращенное_сообщение            |
+——————————+
| Теперь это новый идентификатор Шелли |
+—————————-+
1 ряд в наборе (0,00 сек)

На обороте , 1-е выражение здесь оценивается как FALSE , потому что переменная @Shelly_id в это время равна нулю, что возвращает 3-е выражение.

1
2
3
4
5
6
7

mysql> SELECT IF(@Shelly_id <> 0, ‘Теперь это новый идентификатор Шелли’, ‘Это не идентификатор Шелли’) AS return_message ;
+————————-+
| возвращенное_сообщение        |
+————————-+
| Это не идентификатор Шелли |
+————————+
1 ряд в наборе (0,00 сек)

Давайте установим @Shelly_id переменная до NULL :

1
2
3
4
5
6
7
8
9
10

mysql> SET @Shelly_id := NULL;
Запрос в порядке, затронуто 0 строк (0,00 с)

mysql> SELECT IF(@Shelly_id IS NULL, ‘Теперь это новый идентификатор Шелли’, ‘Это не идентификатор Шелли’) AS return_message;
+——————————+
| возвращенное_сообщение            |
+——————————+
| Теперь это новый идентификатор Шелли |
+——————————————-+
1 ряд в наборе (0,00 сек)

Первое выражение оценивается как TRUE , возвращая второе, поскольку переменная @Shelly_id равна NULL (на данный момент).

В приведенном ниже запросе возвращается 3-е выражение, потому что 1-е оценивается как FALSE :

1
2
3
4
5
6
7

MySQL> SELECT IS (@shell не идентификатор Шелли’) AS return_message;
+————————-+
| возвращенное_сообщение        |
+————————-+
| Это не идентификатор Шелли |
+————————+
1 ряд в наборе (0,00 сек)

Но также обратите внимание, что если 1-е выражение NULL , затем возвращается 3-е выражение:

1
2
3
4
5
6
7

MySQL> SELECT IF (NULL, это Shellly ‘New Leally’, «Новый идентификатор». s id’) AS return_message;
+————————-+
| возвращенное_сообщение        |
+————————-+
| Это не идентификатор Шелли |
+————————+
1 ряд в наборе (0,00 сек)

Это второе важное отличие переварить. Если выражение 1 равно 0 или NULL , всегда возвращается третье выражение.

Дополнительное чтение: Функция MySQL IF

Хотя я не привел пример условного потока с IF() , я надеюсь, что вы возьмете то, что прочитали здесь, изучите и улучшите для своего конкретного случая использования. Я хотел бы услышать об этом в комментариях ниже.

Нравится то, что вы прочитали? Видите что-нибудь неправильное? Пожалуйста, прокомментируйте ниже и спасибо за чтение!!!

Дополнительные сведения см. в официальном онлайн-руководстве по MySQL 8.0.

Спасибо, что нашли время прочитать этот пост. Я искренне надеюсь, что вы открыли для себя что-то интересное и поучительное. Пожалуйста, поделитесь своими выводами здесь с кем-то из ваших знакомых, кто также получит от этого такую ​​же пользу.

Посетите страницу «Портфолио-Проекты», чтобы увидеть записи в блоге/технические статьи, которые я написал для клиентов.

Я уже упоминал, как сильно люблю кофе?!?!

Чтобы получать уведомления по электронной почте (Никогда не спам) из этого блога («Проза цифровой совы») о последних сообщениях в блоге по мере их публикации, подпишитесь (по собственному желанию), нажав кнопку «Нажмите, чтобы подписаться!» боковая панель на главной странице! (Не стесняйтесь в любое время просматривать страницу Политики конфиденциальности Digital Owl Prose по любым вопросам, которые могут у вас возникнуть: обновления по электронной почте, подписка, отказ, контактные формы и т.