LIKE 연산자로 특정 단어가 포함된 레코드 삭제하기
컬럼 값에 'MONTH_JAN'과 같은 특정 단어가 포함된 레코드를 삭제하려면 LIKE 연산자와 와일드카드(%)를 함께 사용하면 됩니다. 먼저 예제용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(40),
BornMonth varchar(40)
);
Query OK, 0 rows affected (0.47 sec)
테이블에 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable(Name,BornMonth) values('Chris','MONTH_DEC');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name,BornMonth) values('Bob','MONTH_JAN');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name,BornMonth) values('Mike','MONTH_FEB');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name,BornMonth) values('David','MONTH_JAN');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name,BornMonth) values('Carol','MONTH_MARCH');
Query OK, 1 row affected (0.16 sec)현재 저장된 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+-------+-------------+
| Id | Name | BornMonth |
+----+-------+-------------+
| 1 | Chris | MONTH_DEC |
| 2 | Bob | MONTH_JAN |
| 3 | Mike | MONTH_FEB |
| 4 | David | MONTH_JAN |
| 5 | Carol | MONTH_MARCH |
+----+-------+-------------+
5 rows in set (0.00 sec)
DELETE 문으로 조건에 맞는 레코드 삭제하기
다음은 BornMonth 컬럼 값에 'MONTH_JAN'이라는 단어가 포함된 레코드를 삭제하는 쿼리입니다. LIKE 연산자와 함께 '%MONTH_JAN%' 패턴을 사용하여 해당 단어가 포함된 모든 행을 대상으로 합니다.
mysql> delete from DemoTable where BornMonth LIKE '%MONTH_JAN%';
Query OK, 2 rows affected (0.18 sec)
삭제 후 결과 확인하기
테이블의 레코드를 다시 한번 조회하여 삭제가 정상적으로 적용되었는지 확인해 보겠습니다.
mysql> select *from DemoTable;
'MONTH_JAN' 값을 가진 Bob과 David의 레코드가 삭제된 것을 확인할 수 있습니다.
+----+-------+-------------+
| Id | Name | BornMonth |
+----+-------+-------------+
| 1 | Chris | MONTH_DEC |
| 3 | Mike | MONTH_FEB |
| 5 | Carol | MONTH_MARCH |
+----+-------+-------------+
3 rows in set (0.00 sec)
이처럼 DELETE 문에서 WHERE 절과 LIKE 연산자를 조합하면 특정 단어가 포함된 레코드를 손쉽게 삭제할 수 있습니다. 참고로 와일드카드 %의 위치에 따라 매칭 범위가 달라지므로, 정확한 조건 설정에 유의하는 것이 좋습니다.