Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 BOOL을 INT로 변환하는 방법 – CAST() 함수 활용 가이드

MySQL에서 BOOL 타입을 INT로 변환하려면 CAST() 함수를 사용할 수 있습니다. 참고로 MySQL에서 BOOLEAN은 내부적으로 TINYINT(1)로 저장되기 때문에 true는 1, false는 0으로 처리됩니다. 이 글에서는 예제 테이블을 만들고 CAST() 함수를 활용해 BOOL 값을 명시적으로 정수형으로 변환하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 BOOL 타입의 컬럼을 가진 테이블을 생성합니다.

mysql> create table convertBoolToIntDemo
-> (
-> isYoung bool
-> );
Query OK, 0 rows affected (0.69 sec)

2. 레코드 삽입하기

INSERT 명령어를 사용해 테이블에 true와 false 값을 번갈아 삽입해 보겠습니다.

mysql> insert into convertBoolToIntDemo values(true);
Query OK, 1 row affected (0.18 sec)

mysql> insert into convertBoolToIntDemo values(false);
Query OK, 1 row affected (0.09 sec)

mysql> insert into convertBoolToIntDemo values(true);
Query OK, 1 row affected (0.15 sec)

mysql> insert into convertBoolToIntDemo values(false);
Query OK, 1 row affected (0.18 sec)

3. 저장된 데이터 확인하기

SELECT 명령어로 테이블에 저장된 레코드를 조회합니다.

mysql> select *from convertBoolToIntDemo;

실행 결과는 다음과 같습니다.

+---------+
| isYoung |
+---------+
| 1 |
| 0 |
| 1 |
| 0 |
+---------+
4 rows in set (0.00 sec)

출력 결과에서 확인할 수 있듯이, true는 1로, false는 0으로 저장되어 있습니다.

4. CAST() 함수로 BOOL을 INT로 변환하기

다음은 CAST() 함수를 사용해 BOOL을 INT로 변환하는 쿼리입니다.

mysql> select cast(isYoung=1 AS SIGNED INTEGER) from convertBoolToIntDemo;

위 쿼리의 실행 결과는 다음과 같습니다.

+-----------------------------------+
| cast(isYoung=1 AS SIGNED INTEGER) |
+-----------------------------------+
| 1 |
| 0 |
| 1 |
| 0 |
+-----------------------------------+
4 rows in set (0.00 sec)

쿼리 동작 원리

isYoung = 1 비교 표현식은 해당 값이 1(true)이면 1을, 그렇지 않으면 0을 반환하는 불리언 표현식입니다. 이 결과를 CAST(... AS SIGNED INTEGER)로 감싸면 부호 있는 정수형(SIGNED INTEGER)으로 명시적으로 변환됩니다.

참고로 CAST() 외에도 CONVERT() 함수를 사용하거나 isYoung + 0처럼 간단한 산술 연산을 적용하는 방법으로도 동일한 결과를 얻을 수 있습니다.