假設一個int
類型字段在我的表包含任何二進制四位數字(0和1的組合,如1010,0110等) 。我如何有選擇地更新其中一些數字而不更改其他數字。
詳細
我在permissions
表user_relevance_code
場(是int(10)
型),其存儲四位數字代表佔該類型特定的權限是相關的。這四位數字分別存儲1或0,表示它是否相關。從左到右,與這些帳戶類型的相關性 - Manager
,Publisher
,Advertiser
,Developer
被存儲。因此,存儲在此字段中的值0110
意味着它與經理,發佈者相關並與廣告客戶無關。
現在,在任何時候,假設我需要將其中一些權限標記爲與管理人員相關,或者使其與廣告主和發佈者相關,同時使其與管理人員無關,並且所有此類隨機操作。對於所有這些情況,我需要保持其他數字不變。這意味着,如果我只需要更新經理相關性數字,我就不應該觸摸發佈商和廣告客戶數字。
問題
很顯然,我需要做的二進制或我需要的user_relevance_code
當前值應用和存儲它的代碼,但是這不是爲我工作。
爲了使某些權限有關出版商的運作,我想這個查詢 -
update permissions set user_relevance_code = (0100 | user_relevance_code) where <condition to update some permissions>
但這並沒有產生預期的效果。那些早些時候有1000
的記錄被更新爲1004
,我希望它們變成1100
(只更新第二位數字爲1,並保留其他數據原樣)。
我也嘗試將該字段的類型更改爲binary
。我想我做錯了。
非常感謝您的解釋,但'ox_permissions中select(b'0100'| user_relevance_code)其中user_relevance_code = 1000'也表示'1004'並且'更新ox_permissions set user_relevance_code =(b'1000'| user_relevance_code)其中user_relevance_code = 1000'不做更新。不知道我是否缺少一些東西。 – 2012-01-06 10:17:03
@Sandeepan:'where user_relevance_code = 1000'使用十進制值。你的桌子是什麼樣的?數據真的是什麼樣子? 'user_relevance_code'實際上是一個位圖嗎? – 2012-01-06 19:07:57