SQL Что значит & - PullRequest
       108

SQL Что значит &

1 голос
/ 22 января 2020

Я хочу знать функцию оператора &. Например:

SELECT (8 & 16)

В последнем коде, если я изменю второе значение (16) на другое, например 10, результат изменится.

Я читал об этом , но я не нашел точного ответа.

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 22 января 2020

Для 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), аргумент меньший тип данных преобразуется в больший тип данных. В этом случае малое выражение выражается в целое число.

Чтобы вернуться к вашему примеру:

Если вы побитно сравниваете 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

Надеюсь, что поможет.

0 голосов
/ 22 января 2020

В большинстве баз данных & является побитовым оператором И . Он переводит свой целочисленный аргумент в их битовое представление и применяет оператор AND к каждому отдельному биту (это эквивалентно умножению каждого бита индивидуально):

Для вашей операции 8 & 16:

  • 8 представлен как 1000 в двоичном виде
  • 16 соответствует 10000

Выполнение побитового и:

    01000 
AND 10000
    -----   
    00000 (0)
0 голосов
/ 22 января 2020

В MS SQL Server это оператор по битам AND.

Если биты в любом месте равны 1, результат равен 1.

1010 1010 = 170

0100 1011 = 75

0000 1010 = 10

Выбрать 170 & 75

Возвращает 10

...