Разница между утверждениями if и when в SQL - PullRequest
0 голосов
/ 01 июля 2019

Если у меня есть таблица со столбцом number и я хочу создать новый столбец со значениями 'high', 'medium' или 'low' на основе значения в столбце number, могу ли я использовать if /еще заявление, чтобы сделать это?Если так, то как бы это было написано?

У меня есть этот код для создания столбца с использованием оператора when / then:

use master

select 
    *, 
    case
       when (number > 40) then 'high'
       when (number between 30 and 40) then 'medium'
       else 'low'
    end as 'newColumn'
from 
    myTable

В основном я пытаюсь понять разницу между if /операторы else и when / then и почему один будет использоваться поверх другого.

Это если код / ​​else не работает, но я не знаю, так ли это, потому что я его неправильно кодирую:

use master

select 
    *,
    if (number > 40)
      'high'
    else if (number between 30 and 40)
      'medium'
    else 'low'
from 
    test

1 Ответ

1 голос
/ 01 июля 2019

IF-оператор управляет потоком и решает, что должно быть оценено далее, на основе условия, в то время как CASE является функцией, которая возвращает желаемое значение.

Оператор CASE более удобен для чтения, чем оператор IF, когда вы сравниваете одно выражение с диапазоном уникальных значений, а также более эффективны.

...