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

MySQL에서 INT 필드 값 토글하기: IF() 함수를 활용한 간단한 UPDATE 방법

MySQL에서 INT 타입 컬럼의 값을 토글(0 ↔ 1 전환)하려면 UPDATE 문과 IF() 함수를 함께 사용하면 됩니다. 별도의 조건문이나 애플리케이션 로직 없이 단 한 줄의 쿼리로 처리할 수 있어 매우 유용합니다.

기본 문법

UPDATE yourTableName
SET yourColumnName = IF(yourColumnName = 0, 1, 0);

위 문법은 해당 컬럼의 값이 0이면 1로, 그 외의 값(1 포함)이면 0으로 변경합니다. 이제 실제 예제를 통해 동작 과정을 살펴보겠습니다.

1. 예제 테이블 생성

먼저 INT 값을 저장할 테이블을 생성합니다.

mysql> CREATE TABLE ToggleDemo
-> (
-> IsOnOrOff INT
-> );
Query OK, 0 rows affected (0.53 sec)

2. 샘플 데이터 삽입

INSERT 문을 사용해 0과 1 값을 번갈아 입력합니다.

mysql> INSERT INTO ToggleDemo VALUES(1);
Query OK, 1 row affected (0.25 sec)

mysql> INSERT INTO ToggleDemo VALUES(0);
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO ToggleDemo VALUES(1);
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO ToggleDemo VALUES(0);
Query OK, 1 row affected (0.11 sec)

mysql> INSERT INTO ToggleDemo VALUES(1);
Query OK, 1 row affected (0.10 sec)

mysql> INSERT INTO ToggleDemo VALUES(0);
Query OK, 1 row affected (0.09 sec)

3. 현재 데이터 확인

삽입된 전체 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM ToggleDemo;

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

+-----------+
| IsOnOrOff |
+-----------+
| 1 |
| 0 |
| 1 |
| 0 |
| 1 |
| 0 |
+-----------+
6 rows in set (0.00 sec)

4. 토글 쿼리 실행

이제 앞서 소개한 문법을 적용해 모든 값을 반대 값으로 변경합니다.

mysql> UPDATE ToggleDemo SET IsOnOrOff = IF(IsOnOrOff = 0, 1, 0);
Query OK, 6 rows affected (0.12 sec)
Rows matched: 6 Changed: 6 Warnings: 0

5. 결과 검증

다시 데이터를 조회해 값이 정상적으로 토글되었는지 확인합니다.

mysql> SELECT * FROM ToggleDemo;

모든 값이 0 ↔ 1로 성공적으로 전환된 것을 확인할 수 있습니다.

+-----------+
| IsOnOrOff |
+-----------+
| 0 |
| 1 |
| 0 |
| 1 |
| 0 |
| 1 |
+-----------+
6 rows in set (0.00 sec)

추가 팁: 다른 토글 방식

IF() 함수 외에도 비트 연산자나 산술 연산을 활용한 방법도 있습니다.

  • 비트 XOR 연산: SET yourColumnName = yourColumnName ^ 1;
  • 산술 연산: SET yourColumnName = 1 - yourColumnName; (컬럼에 0 또는 1만 있는 경우)

세 가지 방식 모두 결과는 동일하지만, IF() 함수를 사용하면 의도가 명확하게 드러나고 NULL 처리 등 확장도 용이하다는 장점이 있습니다.