2011-06-25 23 views
1

我在我的數據庫中有一個字段,每行都有一個任意值,我想在此添加X.我只想添加X,如果一個標誌字(在這一行中保存爲int)將第二個和第十個位設置爲true。是否可以創建一個SQL語句爲表中的每一行執行此操作?還是必須遍歷整個表格?基於標誌字對錶進行SQL更新?

使用MySQL(5.5)

加分問題:我說基於標記添加X,也有一個比例係數。例如,基於解釋爲一個短的無符號整數的比特20-12的值,我很想分配:

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

+0

哪個SQL? mySQL,SQLlite,Microsoft SQL等 – Jim

+0

=你怎麼能把char'X'和一個數字相乘? –

回答

3

在MS SQL:

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

[編輯]

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

0x1FF800 - 爲12至20。
>> 11掩模 - 轉移它雷莫已經位從0到12
因爲你是第2位和位10集,然後(bit2 and bit10) = 0x202

希望這會回答你的問題過濾。不知道你將如何授予'獎勵積分':)。

+0

我正在使用MySQL - 這個SQL通常是否有效? – Nektarios

+0

@Nektarios - 這也應該在MySQL中工作http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html。 –

+0

謝謝,請參閱編輯以瞭解更復雜的邏輯問題 - 這也有可能嗎? – Nektarios