SQL Serverでは、IIF()
関数(IF
と混同しないでください ステートメント)は、最初の引数の評価に基づいて2番目または3番目の引数を返す条件関数です。
これは、CASE
を作成するための簡単な方法です。 表現。論理的には、CASE WHEN X THEN Y ELSE Z END
と同等です。 IIF(X, Y, Z)
を想定 。
IIF()
Immediate IFの略語です。 。
構文
構文は次のようになります:
IIF ( boolean_expression, true_value, false_value )
場所:
- boolean_expression 評価する式です。
- true_value boolean_expressionの場合に返されます 本当です。
- false_value boolean_expressionの場合に返されます 虚偽または不明です。
CASE
と同様 式、IIF()
ステートメントは、最大レベル10までしかネストできません。
例
IIF()
の方法を示す基本的な例を次に示します。 動作します。
SELECT IIF( 1 < 2, 'True', 'False' );
結果:
True
この場合、評価する式は1 < 2
です。 。 1が2未満であるため、2番目の引数が返されました。
これは、次のことを行うのと同じです。
SELECT
CASE WHEN 1 < 2 THEN 'True'
ELSE 'False'
END;
結果:
True
これらの例では、「True」と「False」という単語を使用しましたが、何でも使用できました。
たとえば、代わりにこれを行うことができます:
SELECT IIF( 1 < 2, 'Fail', 'Pass' );
結果:
Fail
または、「真」または「偽」のバイナリタイプの回答から完全に削除されたものである可能性があります。
例:
SELECT IIF( 1 < 2, 'Deadlift', 'Bench Press' );
結果:
Deadlift
変数のテスト
実際には、通常、前の例のように定数ではなく、変数や列などをテストします。
変数をテストする例を次に示します。
DECLARE @bankBalance int = 123;
SELECT IIF(@bankBalance > 100, 'Rich!', 'Poor');
結果:
Rich!
データベースの例
これは、データベースの列を使用する例です。
SELECT TOP(10)
Name,
Population,
IIF(
Population > 400000,
'Big City',
'Small City'
) AS 'Big/Small'
FROM city;
結果:
+----------------+--------------+-------------+ | Name | Population | Big/Small | |----------------+--------------+-------------| | Kabul | 1780000 | Big City | | Qandahar | 237500 | Small City | | Herat | 186800 | Small City | | Mazar-e-Sharif | 127800 | Small City | | Amsterdam | 731200 | Big City | | Rotterdam | 593321 | Big City | | Haag | 440900 | Big City | | Utrecht | 234323 | Small City | | Eindhoven | 201843 | Small City | | Tilburg | 193238 | Small City | +----------------+--------------+-------------+
ネストされたIIF()関数
IIF()
をネストする例を次に示します。 働き。 「ネスト」とは、別のIIF()
を渡すことを意味します 外側のIIF()
への引数として機能します 機能。
DECLARE @bankBalance int = 123;
SELECT IIF(
@bankBalance > 100,
IIF(@bankBalance > 150, 'Rich!', 'Wealthy'),
'Poor'
);
結果:
Wealthy
IIF()
をネストできます レベル10まで機能します。