본문으로 건너뛰기
최종 수정: 에

FIND_IN_SET

설명​

쉼표로 구분된 문자열 목록 strlist에서 문자열 str이 처음 나타나는 위치를 반환합니다(위치는 1부터 셉니다). 이 함수는 MySQL 호환 모드로 구현되었으며, 쉼표로 구분된 값 목록에서 특정 문자열을 찾는 데 사용됩니다.

구문​

FIND_IN_SET(<str>, <strlist>)

매개변수​

매개변수설명
<str>검색할 대상 문자열입니다. 타입: VARCHAR
<strlist>str을 검색할 쉼표로 구분된 문자열 목록입니다. 타입: VARCHAR

반환 값​

strlist에서 str의 위치를 나타내는 INT 타입 값을 반환합니다(위치는 1부터 셉니다).

검색 규칙:

  • 정확히 일치: str이 strlist의 부분 문자열과 정확히 일치하는 경우에만 위치를 반환합니다
  • 위치는 1부터 셉니다
  • 처음 일치하는 항목의 위치를 반환합니다

특수한 경우:

  • str이 빈 문자열이면 0을 반환합니다
  • strlist가 빈 문자열이면 0을 반환합니다
  • 일치하는 항목이 없으면 0을 반환합니다
  • 매개변수 중 하나라도 NULL이면 NULL을 반환합니다
  • str에 쉼표가 포함되어 있으면 올바르게 검색할 수 없습니다(쉼표가 구분자이기 때문입니다)
  • 일치 여부를 확인할 때 대소문자를 구분합니다

예제​

  1. 기본 검색
SELECT FIND_IN_SET('b', 'a,b,c');
+---------------------------+
| FIND_IN_SET('b', 'a,b,c') |
+---------------------------+
| 2 |
+---------------------------+
  1. 첫 번째 요소 찾기
SELECT FIND_IN_SET('apple', 'apple,banana,cherry');
+------------------------------------------+
| FIND_IN_SET('apple', 'apple,banana,cherry') |
+------------------------------------------+
| 1 |
+------------------------------------------+
  1. 마지막 요소 찾기
SELECT FIND_IN_SET('cherry', 'apple,banana,cherry');
+-------------------------------------------+
| FIND_IN_SET('cherry', 'apple,banana,cherry') |
+-------------------------------------------+
| 3 |
+-------------------------------------------+
  1. 일치하는 항목이 없는 경우
SELECT FIND_IN_SET('orange', 'apple,banana,cherry');
+--------------------------------------------+
| FIND_IN_SET('orange', 'apple,banana,cherry') |
+--------------------------------------------+
| 0 |
+--------------------------------------------+
  1. NULL 값 처리
SELECT FIND_IN_SET(NULL, 'a,b,c'), FIND_IN_SET('b', NULL);
+---------------------------+-------------------------+
| FIND_IN_SET(NULL, 'a,b,c') | FIND_IN_SET('b', NULL) |
+---------------------------+-------------------------+
| NULL | NULL |
+---------------------------+-------------------------+
  1. 빈 문자열 처리
SELECT FIND_IN_SET('', 'a,b,c'), FIND_IN_SET('a', '');
+-------------------------+-----------------------+
| FIND_IN_SET('', 'a,b,c') | FIND_IN_SET('a', '') |
+-------------------------+-----------------------+
| 0 | 0 |
+-------------------------+-----------------------+
  1. 쉼표가 포함된 문자열(올바르게 검색할 수 없음)
SELECT FIND_IN_SET('a,b', 'a,b,c,d');
+------------------------------+
| FIND_IN_SET('a,b', 'a,b,c,d') |
+------------------------------+
| 0 |
+------------------------------+
  1. 대소문자를 구분하는 일치 검색
SELECT FIND_IN_SET('B', 'a,b,c'), FIND_IN_SET('b', 'A,B,C');
+---------------------------+---------------------------+
| FIND_IN_SET('B', 'a,b,c') | FIND_IN_SET('b', 'A,B,C') |
+---------------------------+---------------------------+
| 0 | 0 |
+---------------------------+---------------------------+
  1. 부분 일치는 검색되지 않음
SELECT FIND_IN_SET('ap', 'apple,banana,cherry');
+---------------------------------------+
| FIND_IN_SET('ap', 'apple,banana,cherry') |
+---------------------------------------+
| 0 |
+---------------------------------------+
  1. 숫자 문자열 검색
SELECT FIND_IN_SET('2', '1,2,3,10,20');
+--------------------------------+
| FIND_IN_SET('2', '1,2,3,10,20') |
+--------------------------------+
| 2 |
+--------------------------------+