BIT_AND 함수
BIT_AND 함수는 단일 정수 열 또는 표현식의 모든 값에 대해 비트 단위 AND 연산을 실행합니다. 이 함수는 표현식에서 각 정수 값에 해당하는 각 이진 값의 개별 비트를 집계합니다.
모든 값에서 1로 설정된 비트가 없는 경우에는 BIT_AND 함수가 결과로 0
을 반환합니다. 모든 값에서 1로 설정된 비트가 1개 이상인 경우에는 함수가 정수 값을 반환합니다. 이 정수는 1로 설정된 비트의 이진 값에 해당하는 수입니다.
예를 들어 한 테이블의 열에 정수 값으로 3, 7, 10 및 22가 포함되어 있다고 가정할 때 이 정수의 이진 값은 다음과 같이 표현됩니다.
Integer | 이진 값 |
---|---|
3 | 11 |
7 | 111 |
10 | 1010 |
22 | 10110 |
이 데이터 세트에서 BIT_AND 연산을 실행하면 두 번째부터 마지막 자리까지만 모든 비트가 1
로 설정되는 것을 알 수 있습니다. 결과는 정수 값 2
를 나타내는 00000010
의 이진 값입니다. 따라서 BIT_AND 함수는 2
를 반환합니다.
구문
BIT_AND ( [DISTINCT | ALL] expression )
인수
- 표현식
-
함수가 실행되는 대상 열 또는 표현식입니다. 이 표현식의 데이터 형식은 INT, INT2 또는 INT8이 되어야 합니다. 함수도 동일한 INT, INT2 또는 INT8 데이터 형식을 반환합니다.
- DISTINCT | ALL
-
인수가 DISTINCT일 때는 함수가 결과를 계산하기 전에 지정한 표현식의 중복 값을 모두 제거합니다. 인수가 ALL일 때는 함수가 모든 중복 값을 그대로 유지합니다. ALL이 기본값입니다. 자세한 내용은 비트 단위 집계를 위한 DISTINCT 지원 단원을 참조하십시오.
예
유의적인 비즈니스 정보가 정수 열에 저장된다는 점을 고려했을 때 비트 단위 함수를 사용하여 해당 정보를 추출하거나 집계할 수 있습니다. 다음은 BIT_AND 함수를 USERLIKES라는 테이블의 LIKES 열에 적용한 후 CITY 열을 기준으로 그 결과를 그룹화한 쿼리입니다.
select city, bit_and(likes) from userlikes group by city order by city; city | bit_and --------------+--------- Los Angeles | 0 Sacramento | 0 San Francisco | 0 San Jose | 64 Santa Barbara | 192 (5 rows)
이 결과를 다음과 같이 해석할 수 있습니다.
-
Santa Barbara 시의 정수 값
192
을 이진 값으로 변환하면11000000
이 됩니다. 다시 말해서 이 도시의 사용자들은 모두 스포츠와 영화는 좋아하지만 다른 유형의 이벤트는 좋아하지 않습니다. -
정수
64
는01000000
으로 변환됩니다. 따라서 San Jose의 사용자가 모두 좋아하는 유일한 이벤트 유형은 theatre입니다. -
나머지 3개 도시는 정수 값이
0
이므로 이 도시의 사용자들은 모두 좋아하는 이벤트 유형이 없는 것을 의미합니다.