CASE
Функция CASE проверяет значение некоторого выражение, и в зависимости от результата проверки может возвращать тот или иной результат.
CASE принимает следующую форму:
1
2
3
4
5
6
7
| CASE выражение WHEN значение_1 THEN результат_1 WHEN значение_2 THEN результат_2 ................................. WHEN значение_N THEN результат_N [ ELSE альтернативный_результат] END |
Возьмем для примера следующую таблицу Products:
1
2
3
4
5
6
7
8
| CREATE TABLE Products ( Id INT IDENTITY PRIMARY KEY , ProductName NVARCHAR(30) NOT NULL , Manufacturer NVARCHAR(20) NOT NULL , ProductCount INT DEFAULT 0, Price MONEY NOT NULL ); |
Выполним запрос к этой таблице и используем функцию CASE:
1
2
3
4
5
6
7
8
| SELECT ProductName, Manufacturer, CASE ProductCount WHEN 1 THEN 'Товар заканчивается' WHEN 2 THEN 'Мало товара' WHEN 3 THEN 'Есть в наличии' ELSE 'Много товара' END AS EvaluateCount FROM Products |
Здесь значения столбца ProductCount последовательно сравнивается со значениями после операторов WHEN. В зависимости от значения столбца ProductCount функция CASE будет возвращать одну из строк, которая идет после соответствующего оператора THEN. Для возвращаемого результата определен столбец EvaluateCount:
Также функция CASE может принимать еще одну форму:
1
2
3
4
5
6
7
| CASE WHEN выражение_1 THEN результат_1 WHEN выражение_2 THEN результат_2 ................................. WHEN выражение_N THEN результат_N [ ELSE альтернативный_результат] END |
Например, применительно к таблице Products:
1
2
3
4
5
6
7
8
| SELECT ProductName, Manufacturer, CASE WHEN Price > 50000 THEN 'Категория A' WHEN Price BETWEEN 40000 AND 50000 THEN 'Категория B' WHEN Price BETWEEN 30000 AND 40000 THEN 'Категория C' ELSE 'Категория D' END AS Category FROM Products |
Фактически все то же самое, что и в предыдущем примере, только после CASE не указывается сравниваемое значение. А сами выражения сравнения стоят после оператора WHEN. И если выражение после оператора WHEN будет истинно, то возвращается значение, которое идет после соответствующего оператора THEN.
IIF
Функция IIF в зависимости от результата условного выражения возвращает одно из двух значений. Общая форма функции выглядит следующим образом:
1
| IIF(условие, значение_1, значение_2) |
Если условие в функции IIF истинно то возвращается значение_1, если ложно, то возвращается значение_2. Например:
1
2
3
| SELECT ProductName, Manufacturer, IIF(ProductCount>3, 'Много товара' , 'Мало товара' ) FROM Products |
Комментариев нет:
Отправить комментарий