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

MySQL에서 특정 값으로 시작하는 레코드 조회하기 – LIKE 연산자 활용법

MySQL에서 특정 값으로 시작하는 레코드 선택하기

MySQL에서 특정 값으로 시작하는 레코드를 조회하려면 LIKE 연산자와 와일드카드 문자 %를 함께 사용해야 합니다. LIKE 연산자는 패턴 매칭을 수행하며, %는 '임의의 길이의 문자열(0자 이상)'을 의미합니다. 예를 들어 '567%'라는 패턴은 '567'으로 시작하는 모든 값과 일치합니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable690(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserValue varchar(100)
);
Query OK, 0 rows affected (0.56 sec)

테스트 데이터 삽입

INSERT 명령을 사용하여 테이블에 샘플 레코드를 삽입합니다.

mysql> insert into DemoTable690(UserValue) values('567890');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable690(UserValue) values('789032');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable690(UserValue) values('567342');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable690(UserValue) values('890678');
Query OK, 1 row affected (0.16 sec)

전체 레코드 확인

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

mysql> select *from DemoTable690;

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

+--------+-----------+
| UserId | UserValue |
+--------+-----------+|      2 | 789032    |
|      3 | 567342    |
|      4 | 890678    |
+--------+-----------+
4 rows in set (0.00 sec)

LIKE 연산자로 특정 값으로 시작하는 레코드 조회

이제 '567'로 시작하는 레코드만 조회하는 쿼리를 살펴보겠습니다.

mysql> select *from DemoTable690 where UserValue LIKE '567%';

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

+--------+-----------+
| UserId | UserValue |
+--------+-----------+
|      1 | 567890    |
|      3 | 567342    |
+--------+-----------+
2 rows in set (0.00 sec)

결과를 보면 UserValue가 '567890'과 '567342', 즉 '567'으로 시작하는 두 개의 레코드만 반환된 것을 확인할 수 있습니다.

추가 팁

  • LEFT() 함수 대안: WHERE LEFT(UserValue, 3) = '567'처럼 LEFT 함수를 사용하는 방법도 있지만, 일반적으로 LIKE 연산자가 더 직관적입니다.
  • 성능 최적화: 와일드카드 %가 패턴 앞에 오지 않는 한(예: '567%') 해당 컬럼에 인덱스가 있다면 인덱스를 활용할 수 있어 검색 성능이 유지됩니다.
  • 대소문자 구분: MySQL의 기본 콜레이션(collation)에서는 문자열 비교 시 대소문자를 구분하지 않으므로, 필요하다면 BINARY 키워드나 적절한 콜레이션을 지정하세요.