2011-06-25 10 views
1

DB内に行単位で任意の値を持つフィールドがあります。これにXを追加したいと思います。フラグ語(この行にintとして保持)に2番目と10番目のビットがtrueに設定されている場合にのみ、Xを追加したいと思います。テーブル内のすべての行についてこれを行うSQL文を作成することは可能ですか?または私はテーブル全体を反復する必要がありますか? MySQLの(5.5)フラグワードに基づいたテーブルへのSQL更新?

ボーナスポイントの質問を使用して

:私はフラグに基づいてXを追加すると言うが、スケーリング係数もあります。例えば、短い符号なし整数として解釈ビット20-12の値に基づいて、私は実際に割り当てたい:

value = value + ('X' * thatShort * (bit2 and bit10)); MS SQLで

+0

どのSQLですか? mySQL、SQLlite、Microsoft SQLなど – Jim

+0

= char xと数値をどうやって乗算できますか? –

答えて

3

update MyTable 
set Field1 = Field1 + 'X' 
where Field2 & 0x202 = 0x202 

[EDIT]

value = value (X * (field & 0x1FF800 >> 12) * 0x202) 

0x1FF800 - 20
>> 11から12からマスクである - REMOにそれをシフトこれは、あなたの質問にお答えしますあなたはビット2とBIT10セットでフィルタリングしているので、希望

= 0x202 (bit2 and bit10)、その後、12
に0からビットをveは。あなたが「ボーナスポイント」を与えてもどうしたらいいかわからない:)。

+0

私はMySQLを使用しています - このSQLは一般に有効ですか? – Nektarios

+0

@Nektarios - これはMySQLでも動作しますhttp://dev.mysql.com/doc/refman/5.0/en/bit-functions.html。 –

+0

ありがとう、より複雑なロジックについての質問を編集してください - それも可能ですか? – Nektarios

関連する問題