0

テーブルがSQLあり、このテーブル内には、他の列にデータが含まれている場合に設定する必要がある列がありますBIT"IsComplete"

IsCompleteもともとアプリケーションのチェックボックスによって処理されていましたが、次のように、この " " 列を true にSQL DB設定して処理する責任を に移したいと思います。IsComplete

IsComplete = true if column1 = [something] and column2 = [something] and column3 = [something]
IsComplete = false if column1, column2 or column3 is null or = [nothing]

どうすればこれを達成できますか。

4

5 に答える 5

0

あなたの質問についてよくわかりません。何かが足りないと思います。とにかく、私が思うなら、 Case ステートメントを使用できます

update T set IsComplete = CASE WHEN column1 = something and column2 = something
and column2 = something THEN 1 
WHEN column1 != [Something] OR column2 != [Something] OR column3 != [Something] THEN 0 END
from yourTable T --Your where criteria goes Here, if you need it

この回答は、yourTable3列と1列を取得したと見なし、各行の値を考慮してSomething更新しますIsComplete

于 2012-07-24T21:42:00.543 に答える
0

このための計算列を持つこともできます。

3 つのパラメーターを受け取り、3 つのパラメーターが null でない場合は True を返し、そうでない場合は False を返す関数を作成するだけです。

次に、列 IsCOmplete を作成し、計算列の仕様に設定します

式では dbo.Yourfunction(column1,column2,column3) を使用します

于 2012-07-24T21:47:15.083 に答える
0
update Table SET IsComplete = ISNULL(DATALENGTH(COALESCE(col1,col2,col3)) % 1) + 1,0);

トリックを行う必要があります。

合体とは

isnullとは

データ長とは

とは %

于 2012-07-24T22:20:09.080 に答える
0

あなたはただ更新を行うことができます

Update tableBlah setComplete = 0

Update tableBlah setComplete = 1 where column1 = [something] and column2 = [something] and column3 = [something]

そして、そのテーブルにトリガーを設定して、挿入時に同じことを行います。

于 2012-07-24T21:39:45.323 に答える
-1

使用事例

SET IsComplete = CASE 
WHEN NULLIF(column1,'') IS NULL OR NULLIF(column2,'') is null 
or NULLIF(column3,'') is null THEN 0 
ELSE 1   
END

INSERT に関する以下のコメントへの回答:

INSERT INTO TABLE1 (IsComplete) 
SELECT CASE 
    WHEN NULLIF(@column1,'') IS NULL OR 
    NULLIF(@column2,'') is null or 
    NULLIF(@column3,'') is null THEN 0 
    ELSE 1     
    END
于 2012-07-24T21:40:30.970 に答える