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

MySQL FIND_IN_SET()으로 단일 매개변수에 여러 ID 전달하는 방법

MySQL에서 하나의 매개변수에 여러 개의 ID 또는 값을 전달하려면 FIND_IN_SET() 함수를 사용하면 됩니다. 이 함수는 첫 번째 인자로 전달된 값이 두 번째 인자로 전달된 쉼표로 구분된 문자열 목록에 포함되어 있는지 확인하여, 포함되어 있다면 해당 위치 인덱스를 반환합니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1817
    (
    EmployeeName varchar(20),
    CountryName varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2. 레코드 삽입

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

mysql> insert into DemoTable1817 values('Chris','AUS');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1817 values('David','UK');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1817 values('Bob','US');
Query OK, 1 row affected (0.00 sec)

3. 전체 데이터 조회

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

mysql> select * from DemoTable1817;

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

+--------------+-------------+
| EmployeeName | CountryName |
+--------------+-------------+
| Chris       |          AUS |
| David       |          UK |
| Bob         |          US |
+--------------+-------------+
3 rows in set (0.00 sec)

4. 단일 매개변수에 여러 값 전달하기

다음은 FIND_IN_SET()을 활용하여 하나의 조건에 여러 값을 전달하는 쿼리입니다. 국가명이 'US' 또는 'UK'에 해당하는 행만 조회됩니다.

mysql> select * from DemoTable1817
    where find_in_set(CountryName,'US,UK');

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

+--------------+-------------+
| EmployeeName | CountryName |
+--------------+-------------+
| David       |          UK |
| Bob         |          US |
+--------------+-------------+
2 rows in set (0.00 sec)

FIND_IN_SET() 함수 핵심 정리

FIND_IN_SET(str, strlist) 형태로 사용하며, str이 쉼표로 구분된 문자열 목록 strlist 안에 존재하면 1부터 시작하는 위치를 반환하고, 존재하지 않으면 0을 반환합니다. WHERE 절에서 활용하면 IN 연산자와 유사하게 여러 값을 한 번에 필터링할 수 있습니다. 다만 FIND_IN_SET은 일반적으로 인덱스를 제대로 활용하지 못할 수 있으므로, 대량의 데이터를 다룰 때는 성능 저하 여부를 반드시 확인하는 것이 좋습니다.