MySQL에서 두 개의 값을 비교하여 더 큰 값을 얻고 싶다면, 내장 함수인 GREATEST()를 사용하면 됩니다. 이 함수는 인자로 전달된 여러 값 중 가장 큰 값을 반환합니다.
GREATEST() 함수 기본 문법
SELECT greatest(value1, value2);
위 문법처럼 비교하고자 하는 두 개의 값을 인자로 전달하면, 그중 최댓값이 결과로 반환됩니다. 아래에서 숫자형과 문자열 각각의 경우를 살펴보겠습니다.
사례 1: 정수(Integer) 값 비교
두 값을 모두 정수로 전달하는 경우입니다.
mysql> SELECT greatest(100,-300);
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------------------+ | greatest(100,-300) | +--------------------+ | 100 | +--------------------+ 1 row in set (0.00 sec)
100과 -300을 비교했을 때 더 큰 값인 100이 반환된 것을 확인할 수 있습니다.
사례 2: 문자열(String) 값 비교
이번에는 두 값을 문자열로 전달해 보겠습니다.
mysql> SELECT greatest('A','a');실행 결과는 다음과 같습니다.
+-------------------+
| greatest('A','a') |
+-------------------+
| a |
+-------------------+
1 row in set (0.00 sec)결과로 소문자 'a'가 출력되었습니다. 그 이유는 문자열 비교 시 MySQL이 ASCII 코드값을 기준으로 비교하기 때문입니다. 소문자 'a'의 ASCII 값은 97이고, 대문자 'A'의 ASCII 값은 65입니다. 따라서 97이 65보다 크기 때문에 'a'가 'A'보다 큰 값으로 판단됩니다.
ASCII 값 직접 확인하기
ASCII() 함수를 사용하면 각 문자의 ASCII 코드값을 직접 확인할 수 있습니다. 먼저 소문자 'a'의 ASCII 값 조회 쿼리입니다.
mysql> SELECT ascii('a');실행 결과:
+------------+
| ascii('a') |
+------------+
| 97 |
+------------+
1 row in set (0.00 sec)다음은 대문자 'A'의 ASCII 값 조회 쿼리입니다.
mysql> SELECT ascii('A');실행 결과:
+------------+
| ascii('A') |
+------------+
| 65 |
+------------+
1 row in set (0.00 sec)정리
MySQL에서 두 값의 최댓값을 구하려면 GREATEST() 함수를 사용하면 됩니다. 숫자는 수학적 크기를 기준으로 비교되며, 문자열은 ASCII 코드값을 기준으로 비교된다는 점을 기억해 두면 유용합니다. 참고로 세 개 이상의 값도 GREATEST(value1, value2, value3) 형태로 한 번에 비교할 수 있습니다.