|
| 1 | +****** MySQL функция CASE ****** |
| 2 | + |
| 3 | +MySQL функция CASE оценивает условия и возвращать значение при выполнении первого условия. |
| 4 | + |
| 5 | +Синтаксис MySQL функции CASE: |
| 6 | + |
| 7 | +******************************************************************************************* |
| 8 | +CASE [ expression ] |
| 9 | + |
| 10 | +WHEN condition_1 THEN result_1 |
| 11 | + |
| 12 | +WHEN condition_2 THEN result_2 |
| 13 | + |
| 14 | +... |
| 15 | + |
| 16 | +WHEN condition_n THEN result_n |
| 17 | + |
| 18 | +ELSE result |
| 19 | + |
| 20 | +END |
| 21 | +******************************************************************************************* |
| 22 | + |
| 23 | +Параметры: |
| 24 | +- expression - необязательный. Это значение, которое мы сравниваем со списком условий. |
| 25 | + (То есть: condition_1, condition_2, ... condition_n) |
| 26 | +- condition_1, condition_2, ... condition_n - оценивается в указанном порядке. Как только |
| 27 | + условие оказывается истинным, функция CASE |
| 28 | + возвращает результат и не оценивает условия |
| 29 | + дальше. |
| 30 | +- result_1, result_2, ... result_n - возвращаемое значение, как только условие оказывается |
| 31 | + истинным. |
| 32 | +!!! ВНИМАНИЕ !!! |
| 33 | +Если ни одно условие не будет найдено, то функция CASE вернет значение в предложении ELSE. |
| 34 | +Если предложение ELSE опущено и условие не найдено, то оператор CASE вернет NULL. |
| 35 | + |
| 36 | +Функция CASE может использоваться в следующих версиях MySQL: |
| 37 | +MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23.3 |
| 38 | +!!! ВНИМАНИЕ !!! |
| 39 | + |
| 40 | +****** Использование expression и CASE ****** |
| 41 | + |
| 42 | +Пример использования функции CASE в SQL запросе, в которое включено expression. |
| 43 | + |
| 44 | +******************************************************************************************* |
| 45 | +SELECT supplier_id, |
| 46 | +CASE quantity |
| 47 | + WHEN > 5 THEN 'Количество больше, чем 5' |
| 48 | + WHEN = 5 THEN 'Количество равно 5' |
| 49 | + ELSE 'Другое количество' |
| 50 | +END |
| 51 | +FROM suppliers; |
| 52 | +******************************************************************************************* |
| 53 | + |
| 54 | +В этом примере функции CASE expression представляет собой quantity, значение которого |
| 55 | +сравнивается с каждым из условий, пока не будет выполнено одно из них. Затем соответствующее |
| 56 | +значение будет возвращено функцией CASE. |
| 57 | + |
| 58 | +****** Использование CASE без включения expression ****** |
| 59 | + |
| 60 | +Пример использование функции CASE в SQL предложении, где expression отсутствует: |
| 61 | + |
| 62 | +******************************************************************************************* |
| 63 | +SELECT |
| 64 | +CASE |
| 65 | + WHEN a < b THEN 1 |
| 66 | + WHEN supplier_type = 'clothing' THEN 2 |
| 67 | + ELSE 3 |
| 68 | +END |
| 69 | +FROM suppliers; |
| 70 | +******************************************************************************************* |
| 71 | + |
| 72 | +В данном случае запрос SELECT идет с CASE но без expression, поэтому каждое условие индивидуально |
| 73 | +оценивается и может быть совершенно другим и уникальным. Когда условие выполнено, соответствующее |
| 74 | +значение будет возвращено. |
0 commit comments