SQL Server IF…ELSE 条件文: T-SQL 選択クエリの例

なぜ条件文が必要なのでしょうか?

SQL サーバーの条件ステートメントは、さまざまな条件に対してさまざまなロジックやアクションを定義するのに役立ちます。 これにより、ステートメント内で定義された条件に基づいてさまざまなアクションを実行できます。 実生活では、他の活動や状況の結果に応じて多くのアクションを実行します。

SQL case ステートメントのリアルタイムの例をいくつか示します。

  • もし明日雨が降ったら、私は遠征の計画を立てるつもりです。
  • 私の街からの航空券が 400 ドル未満であれば、ヨーロッパで休暇を過ごします。そうでない場合は、近くの観光スポットを選びます。

ここでは、上記のロードトリップのような XNUMX つのアクションが次のとおりであることがわかります。 条件付きで依存する 「明日は雨が降るか降らないか」という別の活動の結果について。

同様に、MS SQL は、T-SQL ステートメントを条件付きで実行する機能も提供します。

SQL Server の IF… Else ステートメント

In MS SQL, もし…そうでなければ の一種で 条件文.

任意の T-SQL ステートメントは、次を使用して条件付きで実行できます。 もし…そうでなければ.

次の図は、SQL サーバーの IF ELSE を説明しています。

If と Else の仕組み
if と else がどのように機能するか
  • 条件が次のように評価される場合 本当、 次に T-SQL ステートメント、その後に IF SQLサーバーの条件が実行されます。
  • 条件が次のように評価される場合 次に T-SQL ステートメント、その後に ELSE キーワードが実行されます。
  • IF T-SQL ステートメントまたは ELSE T-SQL ステートメントが実行されると、他の無条件 T-SQL ステートメントは実行を継続します。

IF… Else SQLの構文とルール

構文:

IF <Condition>
     {Statement | Block_of_statement}   
[ ELSE   
     {Statement | Block_of_statement}]

ルール:

  • 条件は次のようになります。 ブール式すなわち、 条件が評価されるとブール値が返されます。
  • IF ELSE ステートメント SQL 単一の T-SQL ステートメントまたは T-SQL ステートメントのブロックを条件付きで処理できます。
  • ステートメントのブロックはキーワード BEGIN で始まり、キーワード END で閉じる必要があります。
  • BEGIN と END を使用すると、SQL サーバーが実行する必要があるステートメント ブロックを識別し、IF…ELSE T-SQL ブロックの一部ではない残りの T-SQL ステートメントから分離するのに役立ちます。
  • ELSE はオプションです。

ブール式の数値のみを含む IF…ELSE。

条件: TRUE

IF (1=1)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

ブール式に数値のみを含む IF…ELSE

条件: 偽

IF (1=2)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

ブール式に数値のみを含む IF…ELSE

仮定: 次のようなテーブルがあると仮定します。 「グル99」 以下のように 2 列 4 行になります。

ブール式に数値のみを含む IF…ELSE

我々は使用するだろう 「グル99」 さらなる例の表

ブール式の変数を使用した IF…ELSE。

条件: TRUE

DECLARE @Course_ID INT = 4

IF (@Course_ID = 4)
Select * from Guru99 where Tutorial_ID = 4
ELSE
Select * from Guru99 where Tutorial_ID != 4

ブール式の変数を使用した IF...ELSE

条件: 偽

DECLARE @Course_ID INT = 4

IF (@Course_ID != 4)
Select * from Guru99 where Tutorial_ID = 4
ELSE
Select * from Guru99 where Tutorial_ID != 4

ブール式の変数を使用した IF...ELSE

IF…ELSE with Begin End

条件: TRUE

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	BEGIN
	Select * from Guru99 where Tutorial_ID = 1
	Select * from Guru99 where Tutorial_ID = 2
	END
ELSE
	BEGIN
	Select * from Guru99 where Tutorial_ID = 3
	Select * from Guru99 where Tutorial_ID = 4
	END

IF...ELSE with Begin End

条件: 偽

DECLARE @Course_ID INT = 2

IF (@Course_ID >=3)
	BEGIN
	Select * from Guru99 where Tutorial_ID = 1
	Select * from Guru99 where Tutorial_ID = 2
	END
ELSE
	BEGIN
	Select * from Guru99 where Tutorial_ID = 3
	Select * from Guru99 where Tutorial_ID = 4
	END

IF...ELSE with Begin End

Else を指定しない IF ステートメント

SQL では、ELSE 部分なしで IF ステートメントを使用できます。 ELSE 部分はオプションであると述べたことを思い出してください。 例えば:

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	Select * from Guru99 where Tutorial_ID = 1

次のように出力されます。

Else を指定しない IF ステートメント

偽の条件を実行すると出力は得られません。次のクエリを考えてみましょう。

DECLARE @Course_ID INT = 2

IF (@Course_ID <=0)
	Select * from Guru99 where Tutorial_ID = 1

結果それは

Else を指定しない IF ステートメント

ネストされた IF…Else ステートメント

他のとは異なり、 プログラミング言語、SQL の IF ELSE 条件内に ELSE IF ステートメントを追加することはできません。 SQL クエリ ステートメントで IF ELSE をネストできるのはこのためです。 以下にそれを示します。

 DECLARE @age INT;
SET @age = 60;

IF @age < 18
   PRINT 'underage';
ELSE
BEGIN
   IF @age < 50
      PRINT 'You are below 50';
   ELSE
      PRINT 'Senior';
END;
  • この例では、@age の値が 18 未満の場合、コードは未成年であることを出力します。
  • そうでない場合は、ELSE 部分が実行されます。 ElSE 部分には、入れ子になった IF…ELSE があります。
  • @age の値が 50 未満の場合、「あなたは 50 未満です」と出力されます。これらの条件がいずれも当てはまらない場合、コードは「シニア」と出力します。

ネストされた IF…Else ステートメント

製品概要

  • 変数は、プレースホルダーとして機能するオブジェクトです。
  • ステートメントのブロックはキーワード BEGIN で始まり、キーワード END で閉じる必要があります。
  • Else は IF… ELSE ステートメントでの使用はオプションです
  • SQL IF ELSE 条件を別の IF…ELSE ステートメントにネストすることも可能です。