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

MySQL 단일 쿼리에서 여러 LIKE 조건을 결합하는 방법

MySQL 단일 쿼리에서 여러 LIKE 조건 결합하기

MySQL에서 하나의 SELECT 문 안에 여러 개의 LIKE 조건을 적용하려면 각 조건을 OR 연산자로 연결하면 됩니다. 이렇게 하면 이름, 나이, 국가처럼 서로 다른 컬럼을 대상으로 한 번의 쿼리만으로 패턴 검색을 수행할 수 있습니다.

기본 문법

SELECT * FROM yourTableName
WHERE yourColumnName1 LIKE '%yourValue1%'
   OR yourColumnName2 LIKE '%yourValue2%'
   OR yourColumnName3 LIKE '%yourValue3%';

예제 테이블 생성

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

mysql> create table DemoTable1534
    -> (
    -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName varchar(20),
    -> ClientAge int,
    -> ClientCountryName varchar(20)
    -> );
Query OK, 0 rows affected (0.78 sec)

샘플 데이터 삽입

INSERT 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1534(ClientName,ClientAge,ClientCountryName) values('Chris Brown',29,'AUS');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable1534(ClientName,ClientAge,ClientCountryName) values('David Miller',49,'UK');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1534(ClientName,ClientAge,ClientCountryName) values('John Doe',43,'US');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1534(ClientName,ClientAge,ClientCountryName) values('Adam Smith',38,'US');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1534(ClientName,ClientAge,ClientCountryName) values('Carol Taylor',36,'UK');
Query OK, 1 row affected (0.16 sec)

전체 레코드 조회

SELECT 문으로 테이블에 저장된 모든 데이터를 확인합니다.

mysql> select * from DemoTable1534;

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

+----------+--------------+-----------+-------------------+
| ClientId | ClientName   | ClientAge | ClientCountryName |
+----------+--------------+-----------+-------------------+
|        1 | Chris Brown  |        29 | AUS               |
|        2 | David Miller |        49 | UK                |
|        3 | John Doe     |        43 | US                |
|        4 | Adam Smith   |        38 | US                |
|        5 | Carol Taylor |        36 | UK                |
+----------+--------------+-----------+-------------------+
5 rows in set (0.00 sec)

여러 LIKE 조건을 사용한 쿼리 실행

이제 세 개의 컬럼에 서로 다른 패턴을 지정하여 한 번의 쿼리로 검색해 보겠습니다.

mysql> select * from DemoTable1534
    -> where ClientName LIKE '%Doe%'
    ->    or ClientAge LIKE '%38%'
    ->    or ClientCountryName LIKE '%S';

이 쿼리는 아래 세 가지 조건 중 하나라도 참인 행을 모두 반환합니다.

  • ClientName이 'Doe'를 포함하는 경우
  • ClientAge 값에 '38'이 포함되는 경우
  • ClientCountryName이 'S'로 끝나는 경우

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

+----------+-------------+-----------+-------------------+
| ClientId | ClientName  | ClientAge | ClientCountryName |
+----------+-------------+-----------+-------------------+
|        1 | Chris Brown |        29 | AUS               |
|        3 | John Doe    |        43 | US                |
|        4 | Adam Smith  |        38 | US                |
+----------+-------------+-----------+-------------------+
3 rows in set (0.00 sec)

결과 해석

  • Chris Brown — 국가 코드 'AUS'가 'S'로 끝나므로 세 번째 조건에 해당합니다.
  • John Doe — 이름에 'Doe'가 포함되어 첫 번째 조건을 만족하며, 국가명 'US' 역시 'S'로 끝납니다.
  • Adam Smith — 나이가 38이므로 두 번째 조건에 해당하고, 국가명 'US'로 세 번째 조건도 함께 만족합니다.

주의할 점은, LIKE('%값%' OR ...)처럼 괄호 안에 OR 조건을 넣는 방식은 의도한 대로 평가되지 않거나 경고(warnings)를 유발할 수 있다는 것입니다. 여러 LIKE 조건을 사용할 때는 위 예제처럼 각 조건을 독립적인 술어로 작성하고 OR로 연결하는 것이 올바른 방법이며, 가독성 면에서도 훨씬 유리합니다.