MySQL WHERE 절과 BIN() 함수 함께 사용하기
MySQL의 BIN() 함수는 10진수 숫자를 2진수 문자열로 변환해 주는 문자열 함수입니다. 이 함수를 WHERE 절과 함께 사용하면, 최종적으로 반환되는 결과는 WHERE 절에 지정된 조건에 따라 달라지게 됩니다.
여기서 중요한 점은 WHERE 절의 조건을 평가할 때 비교 대상이 되는 값이 2진수 형태의 문자열이라는 것입니다. 즉, 조건문에는 반드시 2진수 값을 기준으로 비교 조건을 작성해야 합니다.
사용 예제
예를 들어, 'student'라는 테이블이 있고, 'id' 컬럼의 2진수 값이 1010(10진수로 10)보다 큰 행만 조회하고 싶다고 가정해 보겠습니다. 이 경우 다음과 같은 쿼리를 작성할 수 있습니다.
mysql> Select *, Bin(id) from student where BIN(id) > 1010; +------+---------+---------+-----------+---------+ | Id | Name | Address | Subject | Bin(id) | +------+---------+---------+-----------+---------+ | 15 | Harshit | Delhi | Commerce | 1111 | | 20 | Gaurav | Jaipur | Computers | 10100 | +------+---------+---------+-----------+---------+ 2 rows in set (0.00 sec)
결과 분석
위 쿼리의 실행 결과를 살펴보면 다음과 같은 특징을 확인할 수 있습니다.
- id = 15인 행은 2진수로
1111이며, 문자열 비교 기준으로1010보다 크므로 결과에 포함되었습니다. - id = 20인 행은 2진수로
10100이며, 역시 조건을 만족하여 결과에 포함되었습니다.
주의할 점은 BIN() 함수의 반환값이 숫자가 아닌 문자열이라는 것입니다. 따라서 위 예제의 비교는 숫자 크기 비교가 아니라 문자열 비교로 수행됩니다. 정확한 수치 비교가 필요하다면 CONV(id, 10, 2)를 사용하거나, 조건을 10진수(WHERE id > 10)로 작성하는 것이 더 안전합니다.