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

MySQL에서 열의 문자열에 특정 문자열이 포함되어 있는지 확인하는 방법

MySQL에서 열(column)에 저장된 문자열에 특정 문자열이 포함되어 있는지 확인하려면 CONCAT() 함수와 LIKE 연산자를 함께 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
   Name varchar(40)
);
Query OK, 0 rows affected (0.56 sec)

insert 명령을 사용하여 테이블에 여러 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.33 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Johnson');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.12 sec)

select 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+---------+
| Name    |
+---------+
| John    |
| Adam    |
| Bob     |
| Johnson |
| David   |
+---------+
5 rows in set (0.00 sec)

특정 문자열 포함 여부 확인 쿼리

다음은 열의 문자열에 특정 문자열('Joh')이 포함되어 있는지 확인하는 쿼리입니다.

mysql> select *from DemoTable where Name like "%Joh%" OR "Joh" LIKE CONCAT("%", Name, "%");

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

+---------+
| Name    |
+---------+
| John    |
| Johnson |
+---------+
2 rows in set (0.00 sec)

쿼리 동작 원리

이 쿼리는 두 가지 조건을 OR로 결합하여 양방향으로 매칭을 수행합니다.

  • Name like "%Joh%": 열에 저장된 값 자체가 'Joh'라는 문자열을 포함하고 있는지 확인합니다. 예를 들어 'John'과 'Johnson'이 이 조건에 해당합니다.
  • "Joh" LIKE CONCAT("%", Name, "%"): 반대로 검색하려는 문자열('Joh')이 열의 값(Name)을 부분 문자열로 포함하고 있는지 확인합니다. CONCAT() 함수가 Name 값을 '%Name%' 형태의 패턴으로 만들어 비교합니다.

이처럼 두 조건을 함께 사용하면 열의 값이 검색 문자열에 포함된 경우와, 열의 값이 검색 문자열을 포함하는 경우 모두를 한 번의 쿼리로 확인할 수 있습니다.