是否有可能在庫MySQLi在同一個查詢執行兩個位操作,以一列?在一個MySQLi查詢中的列上執行兩個按位操作?
我有一個名爲狀態欄,這列擁有各種不同的標誌,從1到64(目前,這可能會增加)。在一個查詢中,我想清除我知道設置的第一個標誌,然後設置最後一個標誌,其狀態我不知道。我知道我需要執行的操作,在第一種情況,XOR
,並在最後一個的OR
,但我可以在一個查詢一舉兩得?
起初,我以爲我可以用一個CASE
像下面這個例子:
UPDATE products
SET pStatus = CASE pId
WHEN 66 THEN pStatus^1
WHEN 66 THEN pStatus | 64
END
WHERE pId IN (66);
然而,只是運行的第一個XOR
,而不是第二OR
。
我還以爲你也許可以只運行兩個功能一前一後,像這樣:
UPDATE products
SET pStatus^1 | 64
WHERE pId = 66
然而,僅僅產生一個語法錯誤。
有沒有人有一個解決方案,我可以在一個查詢中同時運行?
編輯和解決方案
我很接近上面我的查詢,它們結合在一起。感謝@SylvainLeroux在下面的回答中提供了正確的語法。正確的工作的說法是:
UPDATE products
SET pStatus = (pStatus^1) | 64
WHERE pId = 66
請縮進您的查詢,以便更清楚地進行分組。 – hakre
@hakre我已經更新了我的問題。 – Styphon