1. ホーム
  2. sql

[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?

2022-03-17 20:53:09

質問

を実行するにはどうすればよいのでしょうか? IF...THEN の中に SQL SELECT ステートメントを使用しますか?

例えば、こんな感じです。

SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product

解決方法は?

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

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 ステートメントを使用することができます。 アクセス (で指摘された)。 マーティン・スミス ):

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