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

MySQL FIELD() 함수로 테이블 열에 저장된 문자열의 인덱스 위치 찾기

MySQL에서 FIELD() 함수를 사용하면 테이블 열에 레코드로 저장된 문자열의 인덱스 위치를 손쉽게 확인할 수 있습니다. FIELD() 함수는 첫 번째 인자로 전달한 문자열이 이후에 나열된 값들 중 몇 번째에 해당하는지 그 위치(인덱스)를 숫자로 반환하며, 일치하는 값이 없으면 0을 반환합니다.

아래에서는 'websites'라는 테이블을 예제로 사용해 FIELD() 함수의 동작 방식을 살펴보겠습니다.

예제 테이블: websites

mysql> Select * from websites;
+----+---------------+------------------------+
| Id | Purpose       | Webaddress             |
+----+---------------+------------------------+
| 1  | For tutorials | www.tutorialspoint.com |
| 2  | For searching | www.google.co.in       |
| 3  | For email     | www.gmail.com          |
+----+---------------+------------------------+
3 rows in set (0.00 sec)

'For email' 문자열의 인덱스 위치 찾기

이 테이블의 'Purpose'와 'Webaddress' 두 열에 저장된 값들 중에서 특정 문자열, 예를 들어 'For email'이 몇 번째 인덱스에 위치하는지 알고 싶다면 다음과 같은 쿼리를 실행하면 됩니다.

mysql> Select FIELD('For email', purpose, webaddress) From websites;
+----------------------------------------+
| FIELD('For email', purpose, webaddress)|
+----------------------------------------+
|                                      0 |
|                                      0 |
|                                      1 |
+----------------------------------------+
3 rows in set (0.00 sec)

위 결과 집합을 보면 세 번째 행에서 값이 1로 반환되었습니다. 이는 'For email' 문자열이 세 번째 행의 첫 번째 인자 위치, 즉 'Purpose' 열에 저장되어 있음을 의미합니다. 나머지 두 행은 해당 문자열이 없으므로 0이 반환되었습니다.

'www.tutorialspoint.com' 문자열의 인덱스 위치 찾기

같은 방식으로 웹 주소 문자열의 위치도 확인할 수 있습니다.

mysql> Select FIELD('www.tutorialspoint.com', purpose, webaddress) From websites;
+------------------------------------------------------+
| FIELD('www.tutorialspoint.com', purpose, webaddress) |
+------------------------------------------------------+
|                                                    2 |
|                                                    0 |
|                                                    0 |
+------------------------------------------------------+
3 rows in set (0.00 sec)

위 결과에서 첫 번째 행의 값이 2로 반환되었습니다. 이는 'www.tutorialspoint.com' 문자열이 첫 번째 행의 두 번째 인자 위치, 즉 'Webaddress' 열에 저장되어 있다는 뜻입니다.

정리

FIELD() 함수는 검색 대상 문자열과 비교할 열들을 인자로 나열하기만 하면 되므로, 여러 열에 걸쳐 특정 값이 어느 위치에 존재하는지 빠르게 파악해야 할 때 매우 유용합니다. 단, 일치하는 값이 없으면 0을 반환한다는 점과, 대소문자를 구분하지 않고 비교한다는 점을 함께 기억해 두면 좋습니다.