Где в этом запросе стоит символ &
У меня простой вопрос,
В каком-то старом коде я обнаружил запрос, содержащий:
WHERE !(workassignment.flags&1)
Я никогда раньше не видел знак &, используемый в запросе.
Понятно, что запрос делает для меня, но что такое & sign и зачем мне использовать это в запросе.
2 ответа
Решение
& Означает побитовую операцию И (см. https://en.wikipedia.org/wiki/Bitwise_operation). Побитовое значение 1 (которое используется в выражении WHERE) вернет 1, когда самый правый бит в workassignment.flags
установлен в 1, и в противном случае вернет 0.
Так 1 & 1
= 1 и 0 & 1
= 0
Это "побитовый И" тест - он проверяет, является ли наименее значимый бит workassignment.flags
(не) установлен.