Поиск…


Единый оператор 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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow