Microsoft SQL Server
ЕСЛИ ЕЩЕ
Поиск…
Единый оператор IF
Как и большинство других языков программирования, T-SQL также поддерживает инструкции IF..ELSE.
Например, в приведенном ниже примере 1 = 1
- выражение, которое оценивает значение True, и элемент управления входит в блок BEGIN..END
а оператор Print печатает строку 'One is equal to One'
IF ( 1 = 1) --<-- Some Expression
BEGIN
PRINT 'One is equal to One'
END
Несколько сообщений IF
Мы можем использовать несколько операторов IF для проверки нескольких выражений, полностью независимых друг от друга.
В приведенном ниже примере выражение каждого оператора IF
оценивается, и если оно верно, выполняется код внутри блока BEGIN...END
. В этом конкретном примере выражения First и Third являются истинными, и будут выполняться только эти операторы печати.
IF (1 = 1) --<-- Some Expression --<-- This is true
BEGIN
PRINT 'First IF is True' --<-- this will be executed
END
IF (1 = 2) --<-- Some Expression
BEGIN
PRINT 'Second IF is True'
END
IF (3 = 3) --<-- Some Expression --<-- This true
BEGIN
PRINT 'Thrid IF is True' --<-- this will be executed
END
Единый оператор IF..ELSE
В одном IF..ELSE
, если выражение принимает значение True в выражении IF
элемент управления входит в первый блок BEGIN..END
и только код внутри этого блока выполняется, блок Else просто игнорируется.
С другой стороны, если выражение оценивается как False
блок ELSE BEGIN..END
выполняется, и элемент управления никогда не входит в первый блок BEGIN..END
.
В приведенном ниже примере выражение будет оцениваться как false, а блок Else будет выполнен с печатью строки 'First expression was not true'
IF ( 1 <> 1) --<-- Some Expression
BEGIN
PRINT 'One is equal to One'
END
ELSE
BEGIN
PRINT 'First expression was not true'
END
Несколько IF ... ELSE с окончательными ELSE-сообщениями
Если у нас есть несколько операторов IF...ELSE IF
но мы также хотим также выполнить какой-то фрагмент кода, если ни одно из выражений не оценивается как True, тогда мы можем просто добавить окончательный ELSE
блок, который запускается только в том случае, если ни один из IF
или ELSE IF
выражены в true.
В приведенном ниже примере ни одно из выражений IF
или ELSE IF
является истинным, поэтому выполняется только блок ELSE
и печатает 'No other expression is true'
IF ( 1 = 1 + 1 )
BEGIN
PRINT 'First If Condition'
END
ELSE IF (1 = 2)
BEGIN
PRINT 'Second If Else Block'
END
ELSE IF (1 = 3)
BEGIN
PRINT 'Third If Else Block'
END
ELSE
BEGIN
PRINT 'No other expression is true' --<-- Only this statement will be printed
END
Несколько IF ... ELSE
Чаще всего нам нужно проверять несколько выражений и принимать конкретные действия на основе этих выражений. Эта ситуация обрабатывается с использованием нескольких IF...ELSE IF
операторов.
В этом примере все выражения оцениваются сверху вниз. Как только выражение оценивается как true, выполняется код внутри этого блока. Если выражение не оценивается как true, ничего не выполняется.
IF (1 = 1 + 1)
BEGIN
PRINT 'First If Condition'
END
ELSE IF (1 = 2)
BEGIN
PRINT 'Second If Else Block'
END
ELSE IF (1 = 3)
BEGIN
PRINT 'Third If Else Block'
END
ELSE IF (1 = 1) --<-- This is True
BEGIN
PRINT 'Last Else Block' --<-- Only this statement will be printed
END