sql >> データベース >  >> RDS >> Sqlserver

SQL ServerでのIIF()のしくみ

    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まで機能します。


    1. LocalTimeStamp()がPostgreSQLでどのように機能するか

    2. SQL ServerでのSCHEMA_NAME()のしくみ

    3. 異なるサーバー上の2つのデータベース内の2つのテーブルを結合してデータを照会する

    4. プライマリインデックスとセカンダリインデックスの正確な違いは何ですか?