MySQL의 CASE 문을 사용하여 선택 쿼리의 개별 필드에 대한 값에 키를 매핑할 수 있습니다. 구문은 다음과 같습니다 -
SELECT yourColumnName1,yourColumnName2,yourColumnName3,.........N ( CASE WHEN yourColumnName = 1 THEN 'ENABLED' ELSE 'DISABLED' END ) AS anyVariableName FROM yourTableName;
같은 목적으로 IF() 함수를 사용할 수도 있습니다. 구문은 다음과 같습니다 -
SELECT yourColumnName1,yourColumnName2,yourColumnName3,.........N ,IF(yourColumnName,'ENABLED','DISABLED') as anyVariableName FROM yourTableName;
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> create table MapKeys -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(20), -> isActive boolean, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.65 sec)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -
mysql> insert into MapKeys(Name,isActive) values('Larry',true); Query OK, 1 row affected (0.13 sec) mysql> insert into MapKeys(Name,isActive) values('David',false); Query OK, 1 row affected (0.16 sec) mysql> insert into MapKeys(Name,isActive) values('Mike',true); Query OK, 1 row affected (0.14 sec) mysql> insert into MapKeys(Name,isActive) values('Carol',false); Query OK, 1 row affected (0.17 sec) mysql> insert into MapKeys(Name,isActive) values('Sam',false); Query OK, 1 row affected (0.15 sec) mysql> insert into MapKeys(Name,isActive) values('Bob',true); Query OK, 1 row affected (0.19 sec)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.
mysql> select *from MapKeys;
다음은 출력입니다 -
+----+-------+----------+ | Id | Name | isActive | +----+-------+----------+ | 1 | Larry | 1 | | 2 | David | 0 | | 3 | Mike | 1 | | 4 | Carol | 0 | | 5 | Sam | 0 | | 6 | Bob | 1 | +----+-------+----------+ 6 rows in set (0.00 sec)
이제 case 문을 사용하여 키를 매핑해 보겠습니다. 쿼리는 다음과 같습니다 -
mysql> select Id,Name, -> ( -> CASE WHEN isActive = 1 THEN 'ENABLED' -> ELSE 'DISABLED' -> END -> ) AS Status -> from MapKeys;
다음은 출력입니다 -
+----+-------+----------+ | Id | Name | Status | +----+-------+----------+ | 1 | Larry | ENABLED | | 2 | David | DISABLED | | 3 | Mike | ENABLED | | 4 | Carol | DISABLED | | 5 | Sam | DISABLED | | 6 | Bob | ENABLED | +----+-------+----------+ 6 rows in set (0.00 sec)
IF() 함수의 도움으로 동일한 결과를 얻을 수 있습니다 -
mysql> select Id,Name,if(isActive,'ENABLED','DISABLED') as Status from MapKeys;
다음은 출력입니다 -
+----+-------+----------+ | Id | Name | Status | +----+-------+----------+ | 1 | Larry | ENABLED | | 2 | David | DISABLED | | 3 | Mike | ENABLED | | 4 | Carol | DISABLED | | 5 | Sam | DISABLED | | 6 | Bob | ENABLED | +----+-------+----------+ 6 rows in set (0.00 sec)