FIND_IN_SET(찾을값, '콤마,구분,문자열')은 콤마로 구분된 문자열 리스트에서 값 존재 여부를 확인합니다. 단일 파라미터로 다중 값 검색 시 유용합니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable1817 (
-> EmployeeName VARCHAR(20),
-> CountryName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.00 sec)
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)
데이터 조회
mysql> SELECT * FROM DemoTable1817;
+--------------+-------------+ | EmployeeName | CountryName | +--------------+-------------+ | Chris | AUS | | David | UK | | Bob | US | +--------------+-------------+ 3 rows in set (0.00 sec)
CountryName이 '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은 인덱스를 타지 않습니다(풀스캔). 대용량이면 WHERE CountryName IN ('US','UK')가 더 효율적. IN 리스트는 동적 쿼리 구성 시 파라미터 바인딩이 번거로울 때 FIND_IN_SET이 대안이 될 수 있습니다.