Возможно ли выполнить два побитовых операции в одном столбце в MySQLi в том же запросе?Выполнять две побитовые операции над столбцом в одном запросе MySQLi?
У меня есть столбец с именем status, и этот столбец содержит различные флаги, от 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
Однако это просто выдает ошибку синтаксиса.
У кого-нибудь есть решение, в котором я могу запускать как в одном запросе?
EDIT И РЕШЕНИЕ
Я был близок с моим запросом выше, соединяя их вместе. Спасибо @SylvainLeroux за то, что он дал мне правильный синтаксис с его ответом ниже. Правильное рабочее утверждение:
UPDATE products
SET pStatus = (pStatus^1) | 64
WHERE pId = 66
Пожалуйста, отпечатай свой запрос, чтобы он (подробнее) очистил, где вы группируете. – hakre
@hakre Я обновил свой вопрос так. – Styphon