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

MySQL에서 특정 접두사가 있는 문자열을 찾는 방법 – LIKE 연산자 활용 가이드

MySQL에서는 LIKE 연산자를 사용하면 특정 접두사(prefix)로 시작하는 문자열을 간단하게 검색할 수 있습니다. 이 글에서는 기본 문법부터 실제 예제까지 단계별로 살펴보겠습니다.

LIKE 연산자 기본 문법

접두사가 있는 문자열을 찾으려면 아래와 같은 형식의 쿼리를 사용합니다.

select *from yourTableName where yourColumnName LIKE 'yourPrefixValue%';

여기서 핵심은 접두사 값 뒤에 붙이는 와일드카드 문자 %입니다. %는 임의의 문자열(0개 이상의 문자)을 의미하므로, 'Hi%'처럼 작성하면 "Hi"로 시작하는 모든 문자열이 검색됩니다.

예제용 테이블 생성

위 문법을 실제로 이해하기 위해 먼저 테이블을 만들어 보겠습니다.

mysql> create table findStringWithGivenPrefixDemo
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserMessage text
-> );
Query OK, 0 rows affected (0.82 sec)

UserId는 자동 증가(AUTO_INCREMENT) 기본키로 설정하고, UserMessage에는 사용자 메시지를 저장하는 구조입니다.

샘플 데이터 삽입

INSERT 명령어를 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into findStringWithGivenPrefixDemo(UserMessage) values('Hi Good Morning !!!');
Query OK, 1 row affected (0.17 sec)
mysql> insert into findStringWithGivenPrefixDemo(UserMessage) values('Hey I am busy!!');
Query OK, 1 row affected (0.20 sec)
mysql> insert into findStringWithGivenPrefixDemo(UserMessage) values('Hello what are you doing!!!');
Query OK, 1 row affected (0.47 sec)
mysql> insert into findStringWithGivenPrefixDemo(UserMessage) values('Hi I am learning MongoDB!!!');
Query OK, 1 row affected (0.15 sec)

전체 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from findStringWithGivenPrefixDemo;

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

+--------+-----------------------------+
| UserId | UserMessage |
+--------+-----------------------------+
| 1 | Hi Good Morning !!! |
| 2 | Hey I am busy!! |
| 3 | Hello what are you doing!!! |
| 4 | Hi I am learning MongoDB!!! |
+--------+-----------------------------+
4 rows in set (0.00 sec)

특정 접두사로 문자열 검색하기

이제 "Hi"라는 접두사가 있는 문자열만 조회하는 쿼리를 실행해 보겠습니다.

mysql> select *from findStringWithGivenPrefixDemo where UserMessage LIKE 'Hi%';

결과를 보면 "Hi"로 시작하는 문자열만 출력된 것을 확인할 수 있습니다.

+--------+-----------------------------+
| UserId | UserMessage |
+--------+-----------------------------+
| 1 | Hi Good Morning !!! |
| 4 | Hi i am learning MongoDB!!! |
+--------+-----------------------------+
2 rows in set (0.00 sec)

추가 팁: 성능 최적화

대량의 데이터를 다룰 때는 접두사 검색 성능도 고려해야 합니다. 다행히 LIKE 'prefix%' 형태의 쿼리는 해당 컬럼에 B-Tree 인덱스가 있다면 인덱스를 활용할 수 있어 검색 속도가 크게 향상됩니다. 반면, 와일드카드를 앞에 두는 LIKE '%prefix' 형태는 인덱스를 사용할 수 없으므로 전체 테이블 스캔이 발생할 수 있다는 점을 유의하세요.