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

MySQL에서 LIKE 절을 두 번 활용해 이름과 성이 함께 저장된 테이블에서 특정 이름 조회하기

개요

MySQL에서 이름(FirstName)과 성(LastName)이 하나의 컬럼에 함께 저장되어 있을 때, 특정 조합의 이름을 찾고 싶은 경우가 있습니다. 이때 LIKE 절을 두 번 사용하고 AND 연산자로 연결하면 원하는 레코드를 정확하게 조회할 수 있습니다.

예를 들어, 'John'이라는 이름과 'Doe'라는 성을 모두 포함하는 학생을 찾는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(30)
);
Query OK, 0 rows affected (0.70 sec)

StudentId는 자동 증가(AUTO_INCREMENT) 기본키로 설정하고, StudentName에는 '이름 성' 형태로 데이터가 저장됩니다.

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable(StudentName) values('John Smith');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentName) values('David Miller');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(StudentName) values('Carol Taylor');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(StudentName) values('John Doe');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentName) values('Chris Brown');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(StudentName) values('Adam Doe');
Query OK, 1 row affected (0.11 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

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

+-----------+---------------+
| StudentId | StudentName   |
+-----------+---------------+
|         1 | John Smith    |
|         2 | David Miller  |
|         3 | Carol Taylor  |
|         4 | John Doe      |
|         5 | Chris Brown   |
|         6 | Adam Doe      |
+-----------+---------------+
6 rows in set (0.00 sec)

총 6명의 학생 데이터가 저장되어 있으며, 여기에는 'John Smith', 'Adam Doe'처럼 이름 또는 성만 일치하는 레코드도 포함되어 있습니다.

4. LIKE 절 두 번 사용하여 특정 이름 조회하기

이름이 'John'이고 성이 'Doe'인 레코드를 조회하려면 아래와 같이 LIKE 절을 두 번 사용하고 AND로 연결하면 됩니다.

mysql> select *from DemoTable
    where StudentName LIKE '%John%' and StudentName LIKE '%Doe%';

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

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|         4 | John Doe    |
+-----------+-------------+
1 row in set (0.00 sec)

결과 분석 및 핵심 포인트

조회 결과로 'John Doe'(StudentId: 4) 한 건만 반환되었습니다. 그 이유는 다음과 같습니다.

  • 'John Smith'는 'John'은 포함하지만 'Doe'가 없어서 제외됩니다.
  • 'Adam Doe'는 'Doe'는 포함하지만 'John'이 없어서 제외됩니다.
  • 'John Doe'는 두 조건을 모두 만족하므로 최종 결과에 포함됩니다.

즉, LIKE '%John%'LIKE '%Doe%'를 AND로 연결하면 문자열 내에서 두 단어가 어느 위치에 있든 상관없이 두 키워드를 모두 포함하는 레코드만 필터링됩니다. 와일드카드 '%'는 임의의 문자열(빈 문자열 포함)을 의미하므로, 단어의 순서나 위치에 구애받지 않고 유연한 검색이 가능합니다.

이 방법은 이름과 성이 하나의 컬럼에 통합되어 저장된 시스템에서 특정 인물을 검색할 때 매우 유용하게 활용할 수 있습니다.