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 키워드나 적절한 콜레이션을 지정하세요.