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

MySQL FIELD() 함수와 ELT() 함수, 서로 어떻게 보완될까?

MySQL에서 제공하는 FIELD() 함수와 ELT() 함수는 동작 방식을 살펴보면 서로 정반대의 기능을 수행하면서도 상호 보완적인 관계에 있습니다. 하나는 문자열을 받아 위치를 알려주고, 다른 하나는 위치를 받아 문자열을 돌려주기 때문입니다.

두 함수의 역할 비교

FIELD() 함수는 문자열을 인수로 받으면, 해당 문자열이 문자열 목록에서 몇 번째 인덱스에 위치하는지를 반환합니다. 반면 ELT() 함수는 인덱스 번호를 인수로 받으면, 그 위치에 있는 문자열을 목록에서 찾아 반환합니다.

즉, FIELD()는 '문자열 → 인덱스' 방향으로 작동하고, ELT()는 '인덱스 → 문자열' 방향으로 작동합니다. 아래 예제에서 같은 문자열 목록에 두 함수를 각각 적용해 보면 이 개념을 명확하게 확인할 수 있습니다.

예제

mysql> SELECT ELT(4, 'Ram','is','good','boy') AS Result;

+--------+
| Result |
+--------+
| boy    |
+--------+

1 row in set (0.00 sec)

mysql> SELECT FIELD('boy', 'Ram','is','good','boy') AS Result;

+--------+
| Result |
+--------+
|      4 |
+--------+

1 row in set (0.00 sec)

위 결과 집합에서 볼 수 있듯이, 첫 번째 쿼리는 인덱스 번호(4)를 인수로 받아 문자열('boy')을 출력했고, 두 번째 쿼리는 문자열('boy')을 인수로 받아 인덱스 번호(4)를 출력했습니다. 입력과 출력이 정확히 뒤바뀌어 있기 때문에 두 함수는 서로의 보완재라고 할 수 있습니다.

실무 활용 팁

이러한 상호 보완 관계 덕분에 실무에서도 유용하게 활용할 수 있습니다. 특히 ORDER BY 절과 함께 FIELD()를 사용하면 알파벳순이나 숫자순이 아닌, 사용자가 지정한 임의의 순서대로 결과를 정렬할 수 있습니다. 또한 ELT()를 활용하면 숫자 코드를 미리 정의된 문자열 레이블로 변환하는 간단한 매핑 처리도 가능합니다.