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

MySQL SELECT 문에 와일드카드 추가하는 방법 – CONCAT() 함수 활용법

MySQL에서 검색 조건 앞뒤에 와일드카드(%)를 붙여 부분 일치 검색을 하고 싶다면 CONCAT() 함수를 활용하면 됩니다. LIKE 절과 함께 사용하면 문자열의 시작, 중간, 끝 어디에 있든 원하는 값을 포함한 레코드를 손쉽게 조회할 수 있습니다.

기본 문법

와일드카드를 추가할 때는 CONCAT() 함수로 % 기호를 값의 양쪽에 연결합니다. 기본 문법은 다음과 같습니다.

SELECT * FROM yourTableName
WHERE yourColumnName LIKE CONCAT('%', yourValue, '%');

이제 실제 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> CREATE TABLE demo48
-> (
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(20)
-> );
Query OK, 0 rows affected (0.70 sec)

2. 샘플 데이터 삽입하기

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

mysql> INSERT INTO demo48(name) VALUES('John Smith');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO demo48(name) VALUES('John Doe');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO demo48(name) VALUES('Adam Smith');
Query OK, 1 row affected (0.23 sec)

mysql> INSERT INTO demo48(name) VALUES('David Miller');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO demo48(name) VALUES('Chris Brown');
Query OK, 1 row affected (0.11 sec)

3. 저장된 레코드 확인하기

SELECT 문으로 테이블에 저장된 전체 데이터를 조회해 보겠습니다.

mysql> SELECT * FROM demo48;

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

+----+--------------+
| id | name |
+----+--------------+
| 1 | John Smith |
| 2 | John Doe |
| 3 | Adam Smith |
| 4 | David Miller |
| 5 | Chris Brown |
+----+--------------+
5 rows in set (0.00 sec)

4. 와일드카드를 활용한 조회 쿼리 실행하기

이제 CONCAT() 함수를 사용해 'Smith'라는 문자열이 이름 어디에든 포함된 레코드를 조회하는 쿼리를 실행합니다.

mysql> SELECT * FROM demo48 WHERE name LIKE CONCAT('%', 'Smith', '%');

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

+----+------------+
| id | name |
+----+------------+
| 1 | John Smith |
| 3 | Adam Smith |
+----+------------+
2 rows in set (0.00 sec)

정리

CONCAT('%', 값, '%') 형태를 사용하면 특정 문자열이 컬럼 값의 시작, 중간, 끝 어느 위치에 있더라도 해당 레코드를 모두 조회할 수 있습니다. 만약 문자열이 시작하는 경우만 찾고 싶다면 CONCAT('값', '%'), 끝나는 경우만 찾고 싶다면 CONCAT('%', '값')처럼 와일드카드 위치를 조절하면 됩니다. 이처럼 CONCAT()과 LIKE를 조합하면 MySQL에서 유연한 패턴 검색을 간단하게 구현할 수 있습니다.