카테고리:

비트 식 함수

BITSHIFTLEFT

숫자 식의 비트를 왼쪽으로 n 자리 이동합니다.

별칭:

BIT_SHIFTLEFT

참고 항목:

BITSHIFTRIGHT

구문

BITSHIFTLEFT( <expr1> , <n> )
Copy

인자

expr1

이 식은 INTEGER 로 캐스팅될 수 있는 데이터 타입으로 평가되어야 합니다.

n

이동할 비트 수입니다.

반환

입력 데이터 값의 크기 또는 데이터 타입과 관계없이, 부호 있는 128비트(16바이트) 정수를 반환합니다.

사용법 노트

  • 인자의 데이터 타입이 숫자이지만 INTEGER 는 아닌 경우(예: FLOAT, DECIMAL 등), 해당 인자는 INTEGER 로 캐스팅됩니다.

  • 인자의 데이터 타입이 문자열인 경우(예: VARCHAR), 가능한 경우 인자가 INTEGER 로 캐스팅됩니다. 예를 들어, 문자열 ‘12.3’은 12로 캐스팅됩니다. 값을 INTEGER 로 캐스팅할 수 없는 경우, 값은 NULL로 처리됩니다.

  • 어떤 인자가 NULL인 경우, 결과는 NULL입니다.

  • 결과는 부호 있는 정수입니다. 상위 비트의 값이 변경되면(0에서 1 또는 1에서 0으로) 결과의 부호가 반전됩니다. 예를 들어, BITSHIFTLEFT(1, 127) 은 음수를 반환합니다.

  • 128비트 출력 값의 끝을 지나 이동된 비트는 삭제됩니다.

이 예는 BITSHIFTLEFTBITSHIFTRIGHT 사용 방법을 보여줍니다.

간단한 테이블과 데이터를 만듭니다.

CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
Copy
INSERT INTO bits (ID, bit1, bit2) VALUES 
    (   11,    1,     1),    -- Bits are all the same.
    (   24,    2,     4),    -- Bits are all different.
    (   42,    4,     2),    -- Bits are all different.
    ( 1624,   16,    24),    -- Bits overlap.
    (65504,    0, 65504),    -- Lots of bits (all but the low 6 bits)
    (    0, NULL,  NULL)     -- No bits
    ;
Copy

쿼리를 실행합니다.

SELECT bit1, bit2, BITSHIFTLEFT(bit1, 1), BITSHIFTRIGHT(bit2, 1)
  FROM bits
  ORDER BY bit1;
Copy

출력:

+------+-------+-----------------------+------------------------+
| BIT1 |  BIT2 | BITSHIFTLEFT(BIT1, 1) | BITSHIFTRIGHT(BIT2, 1) |
|------+-------+-----------------------+------------------------|
|    0 | 65504 |                     0 |                  32752 |
|    1 |     1 |                     2 |                      0 |
|    2 |     4 |                     4 |                      2 |
|    4 |     2 |                     8 |                      1 |
|   16 |    24 |                    32 |                     12 |
| NULL |  NULL |                  NULL |                   NULL |
+------+-------+-----------------------+------------------------+
Copy