SQL Server 2012を実行していて、テーブル定義にIIF
を使用してサーバーを定義した後、テーブル定義をCASE WHEN
ステートメントとして解決しました。テーブル定義のIIFがケースになる場合
T_TABLE.sql
CREATE TABLE [dbo].[T_TABLE] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[FLG] AS (IIF ([COL1] = [COL2] AND [STATUS] <> 'FAIL', 1, 0)),
[COL1] INT NULL,
[COL2] INT NULL,
[STATUS] VARCHAR (2000) NULL
);
次私はスクリプトにテーブル定義をSSMSを使用して取得し、データベースにこのコードを実行した後:
CREATE TABLE [dbo].[T_TABLE] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[FLG] AS (case when [COL1]=[COL2] AND [STATUS]<>'FAIL' then (1) else (0) end),
[COL1] INT NULL,
[COL2] INT NULL,
[STATUS] VARCHAR (2000) NULL
);
これはもちろんあるのgitを実行するときに問題を引き起こし/これらの2つのテーブルが等しくないことを示すスキーマの違い。
IIF
を「CASE WHEN
」以上に使用する「ルール」はありますか?私は常に前者がフラグ/単純なロジックルールを作成するためのより簡潔であることを発見しました。
'CASE'を使用してください。これはANSI標準です。 –