MySQL의 STRCMP() 함수는 주로 문자열을 비교하는 데 사용되지만, 숫자 값도 인수로 전달하여 비교할 수 있습니다. 이때 숫자 값은 따옴표 없이 그대로 인수로 넘겨주면 됩니다.
STRCMP() 함수의 반환 값
STRCMP() 함수는 두 인수를 비교한 결과를 다음과 같이 반환합니다.
- 0: 두 값이 같을 때
- 1: 첫 번째 값이 두 번째 값보다 클 때
- -1: 첫 번째 값이 두 번째 값보다 작을 때
- NULL: 인수 중 하나라도 NULL일 때
숫자 값을 사용한 예제
아래 예제는 숫자 값을 인수로 사용하여 STRCMP() 함수를 호출하는 다양한 경우를 보여줍니다.
mysql> Select STRCMP(10,10) As 'Equal Numbers', STRCMP(11,10) AS '2nd Smaller', STRCMP(10,11) AS '1st Smaller', STRCMP(10,NULL) As '2nd NULL', STRCMP(NULL,10) AS '1st NULL', STRCMP(NULL,NULL) AS 'Both NULL'; +---------------+-------------+-------------+----------+----------+-----------+ | Equal Numbers | 2nd Smaller | 1st Smaller | 2nd NULL | 1st NULL | Both NULL | +---------------+-------------+-------------+----------+----------+-----------+ | 0 | 1 | -1 | NULL | NULL | NULL | +---------------+-------------+-------------+----------+----------+-----------+ 1 row in set (0.00 sec)
결과 해석
위 결과를 살펴보면 다음과 같은 내용을 확인할 수 있습니다.
숫자 비교
STRCMP(10,10)→ 0: 두 숫자가 같으므로 0을 반환합니다.STRCMP(11,10)→ 1: 첫 번째 값(11)이 더 크므로 1을 반환합니다.STRCMP(10,11)→ -1: 첫 번째 값(10)이 더 작으므로 -1을 반환합니다.
NULL 값 처리
STRCMP(10,NULL),STRCMP(NULL,10),STRCMP(NULL,NULL)→ 모두 NULL 반환: 인수 중 하나라도 NULL이면 비교 자체가 불가능하므로 항상 NULL을 반환합니다.
이처럼 STRCMP() 함수는 문자열뿐만 아니라 숫자 값 비교에도 활용할 수 있으며, NULL 값이 포함된 경우에는 항상 NULL을 반환한다는 점을 기억해두면 유용합니다.