MySQL의 FIELD() 함수는 첫 번째 인수로 전달된 검색 문자열이 이후에 나열된 문자열 목록에서 몇 번째 위치에 있는지를 반환하는 함수입니다. 그런데 만약 검색 문자열이 인수로 제공된 문자열 목록 안에 존재하지 않는다면, MySQL은 0을 반환합니다.
동작 원리
FIELD() 함수는 목록 내에서 일치하는 문자열의 인덱스(1부터 시작)를 반환하지만, 일치하는 항목이 하나도 없는 경우에는 위치를 찾을 수 없다는 의미로 0을 출력합니다. 이를 활용하면 특정 값의 존재 여부를 손쉽게 확인할 수 있습니다.
예제
아래 예제에서는 'Ram'이라는 문자열을 검색하지만, 두 번째 인수로 주어진 목록('New', 'Delhi')에는 'Ram'이 포함되어 있지 않습니다. 따라서 결과로 0이 반환됩니다.
mysql> Select FIELD('Ram','New','Delhi');
+----------------------------+
| FIELD('Ram','New','Delhi') |
+----------------------------+
| 0 |
+----------------------------+
1 row in set (0.00 sec)정리
- 검색 문자열이 목록에 있으면 → 해당 위치(1부터 시작하는 인덱스) 반환
- 검색 문자열이 목록에 없으면 → 0 반환
이러한 특성 때문에 FIELD() 함수는 단순한 정렬뿐만 아니라, 조건 분기나 값 존재 여부 확인 등 다양한 용도로 활용될 수 있습니다.