В моей таблице я получил столбец, значение которого равно 0 или 1. Если этот столбец равен 0, я вывожу значение как "нет"; если 1, я должен выводить как "да" для всех строк. Как я могу это сделать, только используя инструкцию SQL. Благодаря
SQL Server INLINE ЕСЛИ ЕСЛИ
Ответ 1
SQL Server не имеет встроенного оператора if
, но он имеет встроенный case
, который может использоваться для выполнения то же самое.
Случай имеет две формы, один из которых:
select
case MyFlag
when 1 then 'YES'
when 0 then 'NO'
else 'OOPS'
end
from MyTable
где он используется точно так же, как переключатель в C-подобных языках, а другой:
select
case
when MyFlag = 1 then 'YES'
when MyFlag = 0 then 'NO'
-- when some unrelated condition...
else 'OOPS'
end
from MyTable
где он senquential оценивает список условий и возвращает первое, что выполнено.
P.S. Часть end
обязательна, и я обычно забываю об этом.
Это также обычно для простой строки case
, чтобы быть полностью вложенной, например
select (case MyFlag when 1 then 'Yes' else 'No' end) as MyFlagDesc
Ответ 2
Я понимаю, что этот вопрос (который появляется в верхней части результатов Google для "sql server inline if" ) составляет 2 года, но с SQL Server 2012 ответы несколько устарели. Он также представляется дубликатом SQL inline if question type question, но этот вопрос (будучи еще более старым) не имеет актуального ответа либо.
В SQL Server 2012 вы можете использовать функцию IIF
:
IIF ( boolean_expression, true_value, false_value )
Пример:
SELECT IIF(someColumn = 1, 'yes', 'no')
Ответ 3
Две возможности:
(CASE WHEN condition1 THEN Value1 ELSE Value2 END)
или, самое полное решение:
(CASE value_to_check WHEN Value1 THEN Result1 [WHEN ... THEN ...] ELSE OtherResult END)
Ответ 4
Что-то вроде этого:
SELECT
CASE YourColumn
WHEN 0 THEN 'no'
WHEN 1 THEN 'yes'
ELSE 'nothing'
END
FROM dbo.YourTable
Ответ 5
Я смешал три IIF в одной строке, у меня есть три переменные, и я хочу знать, какой из них больше нуля, но я знаю порядок приоритета PersonHomePhoneID, PersonWorkPhoneID и PersonCellPhoneID
IIF(@PersonHomePhoneID > 0 , @PersonHomePhoneID, IIF(@PersonWorkPhoneID > 0 , @PersonWorkPhoneID, IIF(@PersonCellPhoneID > 0 , @PersonCellPhoneID, 0)))
Ответ на вопрос:
IIF(column = 1 , 'yes', IIF(column = 0, 'no', ''))