Что делает оператор ha sh (#) в Postgresql - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь воспроизвести функцию, созданную бывшим сотрудником в Postgres на другом языке, и не могу понять, что делает оператор #. Я проверил несколько цифр, и в результатах, похоже, нет последовательности:

select  1 # 1  --0
        ,1 # 2 --3
        ,1 # 3 --2
        ,1 # 4 --5
        ,1 # 5 --4
        ,2 # 2 --0
        ,2 # 3 --1
        ,2 # 4 --6

Если кто-нибудь сможет объяснить, я был бы очень благодарен!

1 Ответ

4 голосов
/ 09 января 2020

Официально это называется "побитовый XOR". См. 9.6. Функции и операторы битовых строк .

Он вычисляет операцию XOR между каждым битом двух аналогов.

Например:

select 10 # 12

Будет вычислено как XOR между соответствующими им двоичными цифрами:

1 0 1 0 (decimal 10)
1 1 0 0 (decimal 12)
-------
0 1 1 0 (decimal 6)

Результат:

6
...