비트 연산 함수

비트 연산 함수 (Bitwise Functions)

비트 연산 스칼라 함수는 INT와 LONG 정수 타입에 대해 비트 단위 연산을 수행해요.

출처: 문서

본문

타입 동작 방식

  • INT 입력: 모든 인자가 INT이면 결과는 INT
  • 혼합 또는 LONG 입력: 어떤 인자라도 LONG이면 결과는 LONG
  • bitExtract: 입력 타입과 무관하게 항상 INT 반환

bitAnd / bit_and

두 값에 대해 비트 단위 AND 연산을 수행해요.

시그니처

bitAnd(a, b) bit_and(a, b)

인자 타입 설명
a INT 또는 LONG 첫 번째 값
b INT 또는 LONG 두 번째 값

반환 타입: 둘 다 INT면 INT, 하나라도 LONG이면 LONG

사용 예시

SELECT bitAnd(12, 10) AS value
FROM myTable
value
8
SELECT bitAnd(intCol, 3) AS masked
FROM myTable

bitOr / bit_or

두 값에 대해 비트 단위 OR 연산을 수행해요.

시그니처

bitOr(a, b) bit_or(a, b)

인자 타입 설명
a INT 또는 LONG 첫 번째 값
b INT 또는 LONG 두 번째 값

반환 타입: 둘 다 INT면 INT, 하나라도 LONG이면 LONG

사용 예시

SELECT bitOr(8, 4) AS value
FROM myTable
value
12
SELECT bitOr(intCol, 8) AS flags
FROM myTable

bitXor / bit_xor

두 값에 대해 비트 단위 XOR(배타적 OR) 연산을 수행해요.

시그니처

bitXor(a, b) bit_xor(a, b)

인자 타입 설명
a INT 또는 LONG 첫 번째 값
b INT 또는 LONG 두 번째 값

반환 타입: 둘 다 INT면 INT, 하나라도 LONG이면 LONG

사용 예시

SELECT bitXor(12, 10) AS value
FROM myTable
value
6
SELECT bitXor(intCol, 1) AS toggled
FROM myTable

bitNot

값의 모든 비트를 반전시키는 비트 단위 NOT 연산을 수행해요.

시그니처

bitNot(a)

인자 타입 설명
a INT 또는 LONG 반전할 값

반환 타입: INT면 INT, LONG이면 LONG

사용 예시

SELECT bitNot(0) AS value
FROM myTable
value
-1
SELECT bitNot(intCol) AS inverted
FROM myTable

bitMask

위치 n에 단일 비트가 설정된 비트마스크를 만들어요.

시그니처

bitMask(n)

인자 타입 설명
n INT 비트 위치(0부터 시작)

반환 타입: INT

사용 예시

SELECT bitMask(0) AS value
FROM myTable
value
1
SELECT bitMask(3) AS value
FROM myTable
value
8
SELECT bitMask(6) AS flags
FROM myTable

bitShiftLeft

왼쪽 비트 시프트 연산을 수행해요.

시그니처

bitShiftLeft(a, n)

인자 타입 설명
a INT 또는 LONG 시프트할 값
n INT 시프트할 위치 수

반환 타입: a가 INT면 INT, LONG이면 LONG

사용 예시

SELECT bitShiftLeft(1, 2) AS value
FROM myTable
value
4
SELECT bitShiftLeft(intCol, 2) AS shifted
FROM myTable

bitShiftRight

산술(부호 확장) 오른쪽 비트 시프트 연산을 수행해요.

시그니처

bitShiftRight(a, n)

인자 타입 설명
a INT 또는 LONG 시프트할 값
n INT 시프트할 위치 수

반환 타입: a가 INT면 INT, LONG이면 LONG

사용 예시

SELECT bitShiftRight(8, 2) AS value
FROM myTable
value
2
SELECT bitShiftRight(intCol, 1) AS shifted
FROM myTable

bitShiftRightUnsigned / bitShiftRightLogical

논리(부호 없는) 오른쪽 비트 시프트 연산을 수행하며, 0으로 채워요.

시그니처

bitShiftRightUnsigned(a, n) bitShiftRightLogical(a, n)

인자 타입 설명
a INT 또는 LONG 시프트할 값
n INT 시프트할 위치 수

반환 타입: a가 INT면 INT, LONG이면 LONG

사용 예시

SELECT bitShiftRightUnsigned(-1, 1) AS value
FROM myTable
value
2147483647
SELECT bitShiftRightUnsigned(intCol, 1) AS shifted
FROM myTable

bitExtract / extractBit

위치 n의 비트를 추출하며, 비트가 설정되어 있으면 1을, 그렇지 않으면 0을 반환해요.

시그니처

bitExtract(a, n) extractBit(a, n)

인자 타입 설명
a INT 또는 LONG 추출할 값
n INT 비트 위치(0부터 시작)

반환 타입: 입력 타입과 무관하게 항상 INT

사용 예시

SELECT bitExtract(12, 2) AS value
FROM myTable
value
1
SELECT bitExtract(12, 0) AS value
FROM myTable
value
0
SELECT id FROM myTable WHERE bitExtract(flags, 2) = 1

결합 사용 예시

SELECT 
  id,
  bitAnd(flags, 15) AS lower_nibble,
  bitOr(flags, 128) AS set_high_bit,
  bitExtract(status, 3) AS is_active,
  bitShiftLeft(count, 2) AS quad_count
FROM myTable
WHERE bitExtract(flags, 2) = 1

더 알아보기 (Learn more)