양수인 행에 대해서는 TRUE를, 음수인 행에 대해서는 FALSE를 반환하고 싶다면 MySQL의 IF() 함수를 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 그 방법을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable2038
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Value int
-> );
Query OK, 0 rows affected (0.87 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 양수와 음수가 섞인 레코드들을 입력합니다.
mysql> insert into DemoTable2038(Value) values(57);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable2038(Value) values(-100);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable2038(Value) values(-78);
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable2038(Value) values(78);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable2038(Value) values(91);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable2038(Value) values(-34);
Query OK, 1 row affected (0.14 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable2038;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+-------+
| Id | Value |
+----+-------+
| 1 | 57 |
| 2 | -100 |
| 3 | -78 |
| 4 | 78 |
| 5 | 91 |
| 6 | -34 |
+----+-------+
6 rows in set (0.00 sec)
4. 양수 여부를 판별하는 쿼리 실행하기
이제 IF() 함수를 사용해 Value 컬럼의 값이 0보다 크면 TRUE, 그렇지 않으면 FALSE를 반환하는 쿼리를 작성합니다.
mysql> select *,if(Value > 0,true,false) as Result from DemoTable2038;
실행 결과는 다음과 같습니다.
+----+-------+--------+
| Id | Value | Result |
+----+-------+--------+
| 1 | 57 | 1 |
| 2 | -100 | 0 |
| 3 | -78 | 0 |
| 4 | 78 | 1 |
| 5 | 91 | 1 |
| 6 | -34 | 0 |
+----+-------+--------+
6 rows in set (0.00 sec)
결과 해석
출력 결과를 보면 Result 컬럼에서 양수 값(57, 78, 91)을 가진 행은 1(TRUE)로, 음수 값(-100, -78, -34)을 가진 행은 0(FALSE)으로 표시된 것을 확인할 수 있습니다. MySQL에서는 BOOLEAN 타입이 사실상 TINYINT(1)로 처리되기 때문에 TRUE와 FALSE가 각각 1과 0으로 출력되는 점도 참고하시기 바랍니다.