MySQL에서 BIT 타입의 값은 기본적으로 이진(binary) 값 그대로 반환되기 때문에 화면에 출력하면 알아보기 어려운 경우가 많습니다. 하지만 몇 가지 간단한 방법을 사용하면 비트 값을 사람이 읽을 수 있는 형식으로 손쉽게 변환할 수 있습니다.
방법 1: 0을 더하기
비트 값에 숫자 0을 더하면 MySQL이 해당 값을 정수로 해석하여 결과를 출력합니다. 아래 예제는 bit_testing 테이블을 사용한 것입니다.
mysql> Select bittest+0 from bit_testing; +-----------+ | bittest+0 | +-----------+ | 170 | | 5 | | 5 | +-----------+ 3 rows in set (0.00 sec)
위 결과에서 볼 수 있듯이, 원래 이진 값으로 저장되어 있던 데이터가 170, 5와 같은 십진수 형태로 깔끔하게 출력됩니다.
방법 2: 변환 함수 BIN(), OCT(), HEX() 활용하기
MySQL에서 제공하는 변환 함수를 사용하면 비트 값을 다양한 진법의 문자열로 변환하여 표시할 수 있습니다.
BIN() - 2진수로 변환
BIN() 함수는 값을 2진수 문자열로 변환합니다.
mysql> Select BIN(bittest+0) from bit_testing; +----------------+ | BIN(bittest+0) | +----------------+ | 10101010 | | 101 | | 101 | +----------------+ 3 rows in set (0.00 sec)
OCT() - 8진수로 변환
OCT() 함수는 값을 8진수 문자열로 변환합니다.
mysql> Select OCT(bittest+0) from bit_testing; +----------------+ | OCT(bittest+0) | +----------------+ | 252 | | 5 | | 5 | +----------------+ 3 rows in set (0.05 sec)
HEX() - 16진수로 변환
HEX() 함수는 값을 16진수 문자열로 변환합니다.
mysql> Select HEX(bittest+0) from bit_testing; +----------------+ | HEX(bittest+0) | +----------------+ | AA | | 5 | | 5 | +----------------+ 3 rows in set (0.00 sec)
정리
비트 값을 출력 가능한 형식으로 표시하는 방법은 크게 두 가지입니다. 첫째, 값에 0을 더해 십진수로 변환하는 방법이고, 둘째, BIN(), OCT(), HEX() 같은 변환 함수를 사용해 각각 2진수, 8진수, 16진수 문자열로 변환하는 방법입니다. 상황에 맞는 방식을 선택하면 비트 데이터를 훨씬 직관적으로 확인할 수 있습니다.