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

MySQL에서 필드에 특정 문자열 포함 여부에 따라 TRUE/FALSE 반환하는 방법

개요

MySQL에서 조회 결과가 다른 필드의 값에 특정 문자열을 포함하고 있는지 확인한 뒤, 그에 따라 TRUE(예) 또는 FALSE(아니오)를 반환해야 하는 경우가 자주 있습니다. 이럴 때 IF() 함수를 활용하면 간단하게 처리할 수 있습니다.

이번 글에서는 예제 테이블을 만들고, LastName 필드의 값이 'Miller'인지 판별하여 'Yes' 또는 'No'를 출력하는 방법을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

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

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

2. 데이터 삽입

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

mysql> insert into DemoTable values('Chris','Brown');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('David','Miller');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Adam','Smith');
Query OK, 1 row affected (0.11 sec)

3. 전체 데이터 조회

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

mysql> select *from DemoTable;

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

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Chris     | Brown    |
| David     | Miller   |
| Adam      | Smith    |
+-----------+----------+
3 rows in set (0.00 sec)

4. IF() 함수로 문자열 포함 여부 판별하기

다음 쿼리는 LastName 필드의 값이 'Miller'와 일치하는지 검사한 후, 조건이 참이면 'Yes', 거짓이면 'No'를 반환합니다.

mysql> select if(LastName='Miller','Yes','No') AS LastName, FirstName from DemoTable;

실행 결과는 아래와 같습니다.

+----------+-----------+
| LastName | FirstName |
+----------+-----------+
| No       | Chris     |
| Yes      | David     |
| No       | Adam      |
+----------+-----------+
3 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 David의 LastName이 'Miller'이므로 'Yes'가 반환되었고, Chris와 Adam은 해당하지 않으므로 'No'가 반환된 것을 확인할 수 있습니다.

참고: 부분 문자열 매칭이 필요한 경우

위 예제는 정확히 일치하는 값을 비교했습니다. 만약 필드 값에 특정 문자열이 일부 포함되어 있는지만 확인하고 싶다면 LIKE 연산자를 함께 사용하면 됩니다.

mysql> select if(LastName LIKE '%Mill%','Yes','No') AS Result, FirstName from DemoTable;

이처럼 IF() 함수는 조건식, 참일 때 반환값, 거짓일 때 반환값 세 가지 인수를 받아 동작하므로, 다양한 조건 판별 로직을 손쉽게 구현할 수 있습니다.