MySQL에서 LIKE concat()을 사용할 수 있나요?
네, MySQL에서는 LIKE 연산자와 CONCAT() 함수를 함께 사용할 수 있습니다. CONCAT() 함수로 동적으로 패턴 문자열을 만들어 LIKE 조건에 적용하면, 고정된 문자열 대신 유연한 검색 조건을 구성할 수 있습니다.
실제 예제를 통해 확인해 보겠습니다.
1. 테이블 생성하기
먼저 데모용 테이블을 생성합니다.
mysql> create table DemoTable
(
Name varchar(50)
);
Query OK, 0 rows affected (0.63 sec)2. 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 샘플 레코드를 추가합니다.
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.16 sec)3. 전체 레코드 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+------+ | Name | +------+ | John | | Adam | | Bob | | Mike | +------+ 4 rows in set (0.00 sec)
4. LIKE concat() 쿼리 실행하기
아래는 CONCAT() 함수를 활용해 '%o%'라는 검색 패턴을 동적으로 생성하고, 이름에 문자 'o'가 포함된 레코드를 조회하는 쿼리입니다.
mysql> select Name from DemoTable where Name LIKE concat('%','o','%');실행 결과는 다음과 같습니다.
+------+ | Name | +------+ | John | | Bob | +------+ 2 rows in set (0.03 sec)
LIKE concat()의 장점
위 결과에서 볼 수 있듯이, 이름에 'o'가 포함된 John과 Bob만 정상적으로 조회되었습니다.
LIKE concat() 조합은 특히 다음과 같은 상황에서 유용합니다.
- 검색어를 변수나 파라미터로 전달받아 동적 쿼리를 구성할 때
- 여러 컬럼 값을 결합해 하나의 검색 패턴을 만들 때
- 애플리케이션 코드에서 문자열 연결 없이 SQL 내부에서 패턴을 처리하고 싶을 때
예를 들어 WHERE Name LIKE CONCAT('%', @searchKeyword, '%')처럼 작성하면, 사용자 입력값을 안전하게 패턴에 포함시켜 부분 일치 검색을 구현할 수 있습니다. 다만 사용자 입력을 직접 연결할 경우 SQL 인젝션 위험이 있으므로, 반드시 파라미터 바인딩(Prepared Statement)과 함께 사용하는 것이 좋습니다.