кодесурса
«MYSQL

MySQL IF () функция

script1adsense2code
script1adsense3code

ЕСЛИ () функция

MySQL IF () принимает три выражения и, если первое выражение истинно, не равно нулю и не равно NULL, оно возвращает второе выражение. В противном случае он возвращает третье выражение.

В зависимости от контекста, в котором он используется, он возвращает либо числовое, либо строковое значение.

Синтаксис:

 IF (выражение, expr_true, expr_false);

параметры

название Описание Тип возврата
выражение Выражение.
expr_true Возвращает, когда условие ИСТИНА. строка, когда expr_true является строкой, значение с плавающей запятой, когда expr _true является значением с плавающей запятой, и целое число, когда expr _true является целым числом.
expr_false Возвращает, когда условие ЛОЖЬ. строка, когда expr_false является строкой, значение с плавающей запятой, когда expr _false является значением с плавающей запятой, и целое число, когда expr _false является целым числом.

Версия MySQL: 5.6

Примечание: есть другой оператор IF , который отличается от функции IF (), описанной в главе процедуры MySQL.

Иллюстрированная презентация

«MYSQL

Пример: функция MySQL IF ()

В следующем утверждении, поскольку 1 меньше 3, поэтому IF () возвращает третье выражение, т.е. false.

Код:

SELECT IF(1>3,'true','false');

Пример вывода:

 mysql> SELECT IF (1> 3, «истина», «ложь»);
+ ------------------------ +
| IF (1> 3, «истина», «ложь») |
+ ------------------------ +
| ложь | 
+ ------------------------ +
1 ряд в наборе (0,00 сек)

Пример: функция IF () с CASE

В следующем примере оператор MySQL возвращает третье выражение «ложь», поскольку первое выражение не является истинным.

Код:

SELECT IF((SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END),'true','false');

Пример вывода:

 mysql> SELECT IF ((ВЫБЕРИТЕ СЛУЧАЙ, КОГДА 1> 0 THEN 'true' ELSE 'false' END), 'true', 'false');
+ ------------------------------------------------- ----------------------- +
| IF ((ВЫБЕРИТЕ СЛУЧАЙ, КОГДА 1> 0 ТОГДА 'истина', ДАЛЕЕ 'ложь' КОНЕЦ), 'истина', 'ложь') |
+ ------------------------------------------------- ----------------------- +
| ложь | 
+ ------------------------------------------------- ----------------------- +
1 ряд в наборе, 1 предупреждение (0,02 с)

MySQL IF в выражении SELECT

Следующая инструкция MySQL возвращает название книги и на каком языке книга была опубликована. Статус языка - английский. Книга для pub_lang. Английский, в противном случае возвращается «Другой язык».

Код:

SELECT book_name,
IF(pub_lang='English',"English Book","Other Language") 
AS Language 
FROM book_mast;

Пример таблицы: book_mast


Пример вывода:

 mysql> SELECT book_name,
    -> IF (pub_lang = "Английский", "Английская книга", "Другой язык")
    -> AS Language
    -> ОТ book_mast;
+ ------------------------------------- + ----------- ----- +
| book_name | Язык |
+ ------------------------------------- + ----------- ----- +
| Введение в электродинамику | Английская книга | 
| Понимание стальных конструкций | Английская книга | 
| Руководство по сети | Другое Lnaguage | 
| Передача тепла и массы | Английская книга | 
| Концептуальная физика | Другое Lnaguage | 
| Основы жары | Другое Lnaguage | 
| Продвинутая 3d графика | Другое Lnaguage | 
| Анатомия человека | Другое Lnaguage | 
| Уход за психическим здоровьем | Английская книга | 
| Основы термодинамики | Английская книга | 
| Экспериментальный анализ кошек | Другое Lnaguage | 
| Природа Мира | Английская книга | 
| Окружающая среда - устойчивое будущее | Другое Lnaguage | 
| Концепции в здоровье | Другое Lnaguage | 
| Анатомия и физиология | Другое Lnaguage | 
| Сети и Телекоммуникации | Другое Lnaguage | 
+ ------------------------------------- + ----------- ----- +
16 рядов в наборе (0,02 сек)

MySQL SELECT в выражении IF

Следующая инструкция MySQL возвращает имя книги, isbn no и псевдоним столбца Page / Price выражения из таблицы book_mast. Страницей / Ценой будет Цена, если число языков, отличных от английского, больше, чем языка Английский, в противном случае Страницей / Ценой будут Страницы и no_page. Здесь в этом примере количество книг на других языках больше, чем количество книг на английском языке.

Код:

SELECT book_name,isbn_no,
IF((SELECT COUNT(*) FROM book_mast WHERE pub_lang='English')>
(SELECT COUNT(*) FROM book_mast WHERE pub_lang<>'English'),
(CONCAT("Pages: ",no_page)),(CONCAT("Price: ",book_price))) 
AS "Page / Price"
FROM book_mast;

Пример таблицы: book_mast


Пример вывода:

 mysql> SELECT book_name, isbn_no,
    -> ЕСЛИ ((ВЫБЕРИТЕ СЧЕТЧИК (*) ОТ book_mast ГДЕ pub_lang = 'Английский')>
    -> (ВЫБЕРИТЕ COUNT (*) ИЗ book_mast, ГДЕ pub_lang <> 'English'),
    -> (CONCAT ("Страницы:", no_page)), (CONCAT ("Цена:", book_price))) 
    -> AS "Страница / Цена"
    -> ОТ book_mast;
+ ------------------------------------- + ----------- - + --------------- +
| book_name | isbn_no | Страница / Цена |
+ ------------------------------------- + ----------- - + --------------- +
| Введение в электродинамику | 0000979001 | Цена: 85,00 | 
| Понимание стальных конструкций | 0000979002 | Цена: 105,50 | 
| Руководство по сети | 0000979003 | Цена: 200,00 | 
| Передача тепла и массы | 0000979004 | Цена: 250,00 | 
| Концептуальная физика | 0000979005 | Цена: 145,00 | 
| Основы жары | 0000979006 | Цена: 112,00 | 
| Продвинутая 3d графика | 0000979007 | Цена: 56,00 | 
| Анатомия человека | 0000979008 | Цена: 50,50 | 
| Уход за психическим здоровьем | 0000979009 | Цена: 145,00 | 
| Основы термодинамики | 0000979010 | Цена: 225,00 | 
| Экспериментальный анализ кошек | 0000979011 | Цена: 95,00 | 
| Природа Мира | 0000979012 | Цена: 88,00 | 
| Окружающая среда - устойчивое будущее | 0000979013 | Цена: 100,00 | 
| Концепции в здоровье | 0000979014 | Цена: 180,00 | 
| Анатомия и физиология | 0000979015 | Цена: 135,00 | 
| Сети и Телекоммуникации | 00009790_16 | Цена: 45,00 | 
+ ------------------------------------- + ----------- - + --------------- +
16 рядов в наборе (0,00 сек)

Отображение настраиваемого текста вместо NULL с использованием функции MySQL IF

В таблице book_mast язык публикации некоторых книг не был установлен, поэтому, когда мы выбираем book_mast, столбец pub_lang отображает значения NULL, что не имеет смысла для целей отчетности. Смотрите следующий запрос:

 ВЫБЕРИТЕ book_id, book_name, pub_lang
    -> ОТ book_mast;
+ --------- + ------------------------------------- + - --------- +
| book_id | book_name | pub_lang |
+ --------- + ------------------------------------- + - --------- +
| BK001 | Введение в электродинамику | Английский |
| BK002 | Понимание стальных конструкций | Английский |
| BK003 | Руководство по сети | Хинди |
| BK004 | Передача тепла и массы | Английский |
| BK005 | Концептуальная физика | NULL |
| BK006 | Основы жары | Немецкий |
| BK007 | Продвинутая 3d графика | Хинди |
| BK008 | Анатомия человека | Немецкий |
| BK009 | Уход за психическим здоровьем | Английский |
| BK010 | Основы термодинамики | Английский |
| BK011 | Экспериментальный анализ кошек | Французский |
| BK012 | Природа Мира | Английский |
| BK013 | Окружающая среда - устойчивое будущее | Немецкий |
| BK014 | Концепции в здоровье | NULL |
| BK015 | Анатомия и физиология | Хинди |
| BK016 | Сети и Телекоммуникации | Французский |
+ --------- + ------------------------------------- + - --------- +
16 рядов в наборе (0,00 сек)

Мы можем избежать отображения NULL на выходе, используя функцию IF для возврата N / A вместо NULL. Вот запрос ниже.

Код:

SELECT book_id, book_name, 
IF(pub_lang IS NULL,'N/A',pub_lang) AS "Pub. Language"
FROM book_mast;

Пример вывода:

 mysql> SELECT book_id, book_name,
    -> IF (pub_lang IS NULL, 'N / A', pub_lang) AS "Pub. Language"
    -> ОТ book_mast;
+ --------- + ------------------------------------- + - -------------- +
| book_id | book_name | Паб. Язык |
+ --------- + ------------------------------------- + - -------------- +
| BK001 | Введение в электродинамику | Английский |
| BK002 | Понимание стальных конструкций | Английский |
| BK003 | Руководство по сети | Хинди |
| BK004 | Передача тепла и массы | Английский |
| BK005 | Концептуальная физика | N / A |
| BK006 | Основы жары | Немецкий |
| BK007 | Продвинутая 3d графика | Хинди |
| BK008 | Анатомия человека | Немецкий |
| BK009 | Уход за психическим здоровьем | Английский |
| BK010 | Основы термодинамики | Английский |
| BK011 | Экспериментальный анализ кошек | Французский |
| BK012 | Природа Мира | Английский |
| BK013 | Окружающая среда - устойчивое будущее | Немецкий |
| BK014 | Концепции в здоровье | N / A |
| BK015 | Анатомия и физиология | Хинди |
| BK016 | Сети и Телекоммуникации | Французский |
+ --------- + ------------------------------------- + - -------------- +
16 рядов в наборе (0,01 с)

Функция MySQL IF с агрегатными функциями

MySQL SUM IF - функция IF с функцией SUM

Пример таблицы: покупка


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

Код:

SELECT SUM(IF(pub_lang ='English',1,0))   AS English,
       SUM(IF(pub_lang <> 'English',1,0)) AS "Non English"
FROM purchase;

Пример вывода:

 mysql> SELECT SUM (IF (pub_lang = 'English', 1,0)) AS английский,
    -> SUM (IF (pub_lang <> 'English', 1,0)) AS "Non English"
    -> С покупки;
+ --------- + ------------- +
| Английский | Не английский |
+ --------- + ------------- +
| 4 | 1 |
+ --------- + ------------- +
1 ряд в наборе (0,02 сек)

MySQL COUNT IF - функция IF с функцией COUNT

Пример таблицы: издатель


Следующий оператор sql будет отображать количество издателей в строке для каждой страны, указанной в таблице издателей.

Код:

SELECT COUNT(IF(country ='USA',1,NULL))  USA,
       COUNT(IF(country ='UK',1,NULL))  UK,
       COUNT(IF(country ='India',1,NULL))  India,
       COUNT(IF(country ='Australia',1,NULL))  Australia
FROM publisher;

Пример вывода:

 mysql> SELECT COUNT (IF (страна = 'США', 1, NULL)) США,
    -> COUNT (IF (страна = 'UK', 1, NULL)) Великобритания,
    -> COUNT (IF (страна = 'Индия', 1, NULL)) Индия,
    -> COUNT (IF (страна = 'Австралия', 1, NULL)) Австралия
    -> ОТ издателя;
+ ----- + ---- + ------- + ----------- +
| США | Великобритания | Индия | Австралия |
+ ----- + ---- + ------- + ----------- +
| 3 | 2 | 2 | 1 |
+ ----- + ---- + ------- + ----------- +
1 ряд в наборе (0,00 сек)

Другим способом достижения аналогичного результата можно воспользоваться предложением GROUP BY и функцией COUNT, не используя функцию IF, отчет об отображении совершенно другой. Вышеуказанные выходные данные показаны в строке, но следующий запрос покажет количество строк для различного числа стран. Вот код и результат:

 mysql> ВЫБРАТЬ страну, COUNT (страна)
    -> ОТ издателя
    -> GROUP BY страна;
+ ----------- + ---------------- +
| страна | СЧЕТ (страна) |
+ ----------- + ---------------- +
| Австралия | 1 |
| Индия | 2 |
| Великобритания | 2 |
| США | 3 |
+ ----------- + ---------------- +
4 ряда в наборе (0,01 с)

Предыдущая: оператор CASE
Далее: IFNULL ()

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code