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

MySQL에서 같은 행의 값이 문자열에 포함되어 있는지 확인하는 방법

LIKE 연산자로 같은 행의 부분 문자열 확인하기

동일한 행에 있는 두 개의 컬럼 값을 서로 비교해야 하는 경우에는 LIKE 연산자와 CONCAT() 함수를 함께 사용하면 됩니다. 예를 들어, FirstName 값이 같은 행의 FullName 문자열 안에 포함되어 있는지 확인하고 싶다면 아래의 과정을 따라 해 보세요.

1. 테이블 생성

먼저 데모용 테이블을 생성합니다.

mysql> create table DemoTable
(
    FirstName varchar(100),
    FullName varchar(100)
);
Query OK, 0 rows affected (0.53 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('John','John Smith');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('David','John Miller');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Bob','Sam Miller');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Chris','Chris Brown');
Query OK, 1 row affected (0.10 sec)

3. 전체 레코드 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

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

+-----------+-------------+
| FirstName | FullName    |
+-----------+-------------+
| John      | John Smith  |
| David     | John Miller |
| Bob       | Sam Miller  |
| Chris     | Chris Brown |
+-----------+-------------+
4 rows in set (0.00 sec)

4. 같은 행의 값 포함 여부 확인 쿼리

문자열이 같은 행의 특정 값을 포함하고 있는지 확인하려면 아래와 같이 CONCAT() 함수를 사용해 와일드카드(%)를 양쪽에 붙인 패턴을 만들어 비교합니다.

mysql> select FirstName,FullName from DemoTable
    where FullName LIKE concat('%', FirstName, '%');

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

+-----------+-------------+
| FirstName | FullName    |
+-----------+-------------+
| John      | John Smith  |
| Chris     | Chris Brown |
+-----------+-------------+
2 rows in set (0.00 sec)

결과 분석

결과를 보면 John Smith에는 'John'이 포함되어 있고, Chris Brown에는 'Chris'가 포함되어 있기 때문에 이 두 행만 조회되었습니다. 반면 'David'는 John Miller에 포함되어 있지 않고, 'Bob' 역시 Sam Miller에 포함되어 있지 않으므로 결과에서 제외되었습니다.

이처럼 CONCAT('%', 컬럼명, '%') 패턴을 활용하면 별도의 저장 프로시저나 애플리케이션 로직 없이도 SQL 쿼리 하나만으로 같은 행 내 문자열 포함 여부를 손쉽게 검사할 수 있습니다.