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

MySQL ENUM 열에서 인용된 값('0', '1') 일치시키는 방법

MySQL ENUM 열과 인용된 값 비교하기

MySQL의 ENUM 타입 열은 테이블 생성 시 정의한 문자열 값 목록 중 하나만 저장할 수 있는 특수한 데이터 타입입니다. 이번 글에서는 ENUM 열에 저장된 인용된 값(예: '0' 또는 '1')을 WHERE 조건으로 활용해 원하는 레코드를 조회하고, 그 개수를 세는 방법을 단계별로 살펴보겠습니다.

1단계: ENUM 열이 포함된 테이블 생성

먼저 ENUM 타입의 열을 가진 테이블을 생성합니다.

mysql> create table DemoTable(
    isMarried ENUM('1','0')
);
Query OK, 0 rows affected (0.46 sec)

2단계: 샘플 데이터 삽입

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('0');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('1');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('1');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('0');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('0');
Query OK, 1 row affected (1.00 sec)
mysql> insert into DemoTable values('1');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('0');
Query OK, 1 row affected (0.09 sec)

3단계: 저장된 데이터 확인

SELECT 문을 실행해 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-----------+
| isMarried |
+-----------+
| 0 |
| 1 |
| 1 |
| 0 |
| 0 |
| 1 |
| 0 |
+-----------+
7 rows in set (0.00 sec)

4단계: 인용된 값으로 조건 검색 후 개수 세기

이제 '0'으로 삽입된 레코드, 즉 인용된 값과 일치하는 행의 개수를 세는 쿼리를 실행합니다.

mysql> select count(*) from DemoTable where isMarried='0';

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

+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.06 sec)

정리 및 주의 사항

위 예제에서 볼 수 있듯이, ENUM 열을 비교할 때는 값에 작은따옴표를 붙인 문자열 형태로 조건을 지정하는 것이 안전합니다. ENUM은 겉보기에 숫자처럼 보여도 내부적으로는 문자열 값과 해당 인덱스로 관리되기 때문에, 따옴표 없이 숫자로 비교하면 ENUM의 인덱스 번호(1부터 시작)와 매칭되어 의도와 다른 결과가 나올 수 있습니다. 따라서 항상 인용된 문자열 값으로 비교하는 습관을 들이면 데이터 불일치 오류를 예방할 수 있습니다.