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

SQLSELECTでIF...THENを実行するにはどうすればよいですか?

    CASE ステートメントはSQLのIFに最も近く、SQLServerのすべてのバージョンでサポートされています。

    SELECT CAST(
                 CASE
                      WHEN Obsolete = 'N' or InStock = 'Y'
                         THEN 1
                      ELSE 0
                 END AS bit) as Saleable, *
    FROM Product
    

    CASTのみを使用する必要があります 結果をブール値にする場合は演算子。 intに満足している場合 、これは機能します:

    SELECT CASE
                WHEN Obsolete = 'N' or InStock = 'Y'
                   THEN 1
                   ELSE 0
           END as Saleable, *
    FROM Product
    

    CASE ステートメントは他のCASEに埋め込むことができます ステートメント、さらには集計に含まれています。

    SQL Server Denali(SQL Server 2012)は、アクセスでも使用できるIIFステートメントを追加します(Martin Smithが指摘):

    SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product
    


    1. MariaDBのデータベースパフォーマンスチューニング

    2. SELECT * FROMのショートカットはありますか?

    3. MariaDB DATABASE()の説明

    4. 新しいインデックス列をキーに含める必要がありますか、それとも含める必要がありますか?