Я хочу знать функцию оператора &. Например:
&
SELECT (8 & 16)
В последнем коде, если я изменю второе значение (16) на другое, например 10, результат изменится.
16
10
Я читал об этом , но я не нашел точного ответа.
Спасибо за вашу помощь.
Для SQL Сервер вы можете найти ответ здесь https://docs.microsoft.com/en-us/sql/t-sql/language-elements/bitwise-and-transact-sql?view=sql-server-ver15
Оператор & побитового выполнения выполняет побитовое логическое И между двумя выражениями, принимая каждый соответствующий бит для обоих выражений. Биты в результате устанавливаются в 1, если и только если оба бита (для текущего разрешаемого бита) во входных выражениях имеют значение 1; в противном случае бит в результате устанавливается в 0. Если левое и правое выражения имеют разные целочисленные типы данных (например, левое выражение - smallint, а правое выражение - int), аргумент меньший тип данных преобразуется в больший тип данных. В этом случае малое выражение выражается в целое число.
Оператор & побитового выполнения выполняет побитовое логическое И между двумя выражениями, принимая каждый соответствующий бит для обоих выражений. Биты в результате устанавливаются в 1, если и только если оба бита (для текущего разрешаемого бита) во входных выражениях имеют значение 1; в противном случае бит в результате устанавливается в 0.
Если левое и правое выражения имеют разные целочисленные типы данных (например, левое выражение - smallint, а правое выражение - int), аргумент меньший тип данных преобразуется в больший тип данных. В этом случае малое выражение выражается в целое число.
Чтобы вернуться к вашему примеру:
Если вы побитно сравниваете 2 целых числа, это будет вычислено:
8 = 0 0 0 0 1 0 0 0 16 = 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 = 0
8 = 0 0 0 0 1 0 0 0 10 = 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 = 8
Надеюсь, что поможет.
В большинстве баз данных & является побитовым оператором И . Он переводит свой целочисленный аргумент в их битовое представление и применяет оператор AND к каждому отдельному биту (это эквивалентно умножению каждого бита индивидуально):
AND
Для вашей операции 8 & 16:
8 & 16
8
1000
10000
Выполнение побитового и:
01000 AND 10000 ----- 00000 (0)
В MS SQL Server это оператор по битам AND.
Если биты в любом месте равны 1, результат равен 1. 1010 1010 = 170 0100 1011 = 75 0000 1010 = 10
Если биты в любом месте равны 1, результат равен 1.
1010 1010 = 170
0100 1011 = 75
0000 1010 = 10
Выбрать 170 & 75
Возвращает 10