MySQL에서 비트 값(bit value)을 사용자 변수에 할당하면 기본적으로 이진 문자열(binary string) 타입으로 저장됩니다. 예를 들어 0b1000011과 같은 비트 리터럴을 변수에 그대로 넣으면 문자열로 취급되기 때문에, 산술 연산이나 비교 작업을 수행할 때 의도와 다른 결과가 나올 수 있습니다.
다행히 MySQL은 비트 값을 숫자로 변환하여 할당할 수 있는 두 가지 간단한 방법을 제공합니다.
방법 1: CAST() 함수 사용
CAST(... AS UNSIGNED)를 활용하면 비트 값을 부호 없는 정수(unsigned number)로 변환할 수 있습니다. 다음 예제를 통해 확인해 보겠습니다.
mysql> SET @abc = CAST(0b1000011 AS UNSIGNED); Query OK, 0 rows affected (0.00 sec) mysql> Select @abc; +------+ | @abc | +------+ | 67 | +------+ 1 row in set (0.00 sec)
위 예제에서 이진수 0b1000011은 십진수 67(ASCII 문자 'C'에 해당)로 변환되어 변수에 할당된 것을 볼 수 있습니다.
방법 2: 0을 더하기 (+0)
비트 값에 0을 더하면(+0) MySQL이 자동으로 해당 값을 숫자 타입으로 변환합니다. 이 방법은 CAST() 함수보다 코드가 더 간결하다는 장점이 있습니다.
mysql> SET @abc = 0b1000011+0; Query OK, 0 rows affected (0.00 sec) mysql> Select @abc; +------+ | @abc | +------+ | 67 | +------+ 1 row in set (0.00 sec)
두 방법 모두 동일한 결과인 67을 반환합니다.
정리
- CAST(비트값 AS UNSIGNED): 명시적이고 가독성이 좋아 의도를 분명히 드러내고 싶을 때 적합합니다.
- 비트값 + 0: 간결하게 작성할 수 있어 간단한 상황에서 유용합니다.
비트 값을 숫자로 다뤄야 하는 경우 위 두 가지 방법 중 상황에 맞는 것을 선택해 사용하면 됩니다.