BIT_OR 함수
BIT_OR 함수는 단일 정수 열 또는 표현식의 모든 값에 대해 비트 단위 OR 연산을 실행합니다. 이 함수는 표현식에서 각 정수 값에 해당하는 각 이진 값의 개별 비트를 집계합니다.
예를 들어 한 테이블의 열에 정수 값으로 3, 7, 10 및 22가 포함되어 있다고 가정합니다. 이 정수의 이진 값은 다음과 같이 표현됩니다.
Integer | 이진 값 |
---|---|
3 | 11 |
7 | 111 |
10 | 1010 |
22 | 10110 |
BIT_OR 함수를 정수 값 집합에 적용하면 연산은 각 위치에서 1
이 있는 값을 찾습니다. 이때 1
은 최소 1개 이상의 값에서 마지막 5자리에 존재하기 때문에 이진 값으로 00011111
이 산출되고, 이에 따라 함수는 31
(16 + 8 + 4 + 2 + 1
)을 반환합니다.
구문
BIT_OR ( [DISTINCT | ALL] expression )
인수
- 표현식
-
함수가 실행되는 대상 열 또는 표현식입니다. 이 표현식의 데이터 형식은 INT, INT2 또는 INT8이 되어야 합니다. 함수도 동일한 INT, INT2 또는 INT8 데이터 형식을 반환합니다.
- DISTINCT | ALL
-
인수가 DISTINCT일 때는 함수가 결과를 계산하기 전에 지정한 표현식의 중복 값을 모두 제거합니다. 인수가 ALL일 때는 함수가 모든 중복 값을 그대로 유지합니다. ALL이 기본값입니다. 자세한 내용은 비트 단위 집계를 위한 DISTINCT 지원 섹션을 참조하세요.
예제
다음은 BIT_OR 함수를 USERLIKES라는 테이블의 LIKES 열에 적용한 후 CITY 열을 기준으로 그 결과를 그룹화한 쿼리입니다.
select city, bit_or(likes) from userlikes group by city
order by city;
city | bit_or
--------------+--------
Los Angeles | 127
Sacramento | 255
San Francisco | 255
San Jose | 255
Santa Barbara | 255
(5 rows)
위의 4개 도시에서는 모든 이벤트 유형을 좋아하는 사용자가 1명 이상입니다(255=11111111
). 하지만 Los Angeles에서는 스포츠를 제외한 모든 이벤트 유형을 좋아하는 사용자가 1명 이상입니다(127=01111111
).