MySQL에서 여러 개의 문자열로 이루어진 목록 안에서 특정 문자열이 몇 번째 위치(인덱스)에 있는지 확인해야 할 때가 있습니다. 이럴 때 FIELD() 함수를 사용하면 손쉽게 해당 문자열의 인덱스 번호를 찾을 수 있습니다.
FIELD() 함수의 기본 문법
FIELD(str_search, String1, String2, …, StringN)
각 인자의 의미는 다음과 같습니다.
- str_search: 인덱스 번호를 찾고자 하는 검색 대상 문자열입니다.
- String1 ~ StringN: 검색이 수행될 문자열들의 목록입니다.
사용 예시
아래 예제는 'Ram', 'is', 'a', 'good', 'boy'라는 문자열 목록에서 'good'이라는 단어가 몇 번째에 위치하는지 확인하는 쿼리입니다.
mysql> Select FIELD('good', 'Ram', 'is', 'a', 'good', 'boy') AS 'Index Number of good';
+----------------------+
| Index Number of good |
+----------------------+
| 4 |
+----------------------+
1 row in set (0.00 sec)실행 결과를 보면 'good'은 목록에서 네 번째에 위치하고 있으므로 4가 반환된 것을 확인할 수 있습니다.
알아두면 좋은 점
- 검색하려는 문자열이 목록에 존재하지 않으면 0이 반환됩니다.
- 문자열 비교 시 대소문자는 구분하지 않습니다. 즉, 'Good'과 'good'은 동일하게 취급됩니다.
- 모든 인자가 NULL일 경우 함수는 0을 반환합니다.
이처럼 FIELD() 함수를 활용하면 복잡한 조건문 없이도 문자열 목록 내에서 원하는 값의 순서를 간단하게 조회할 수 있어, 데이터 정렬이나 우선순위 처리 등 다양한 상황에서 유용하게 사용됩니다.