MySQL의 STRCMP() 함수는 이름 그대로 두 개의 문자열을 서로 비교하는 데 사용됩니다. 이 함수를 호출할 때는 비교 대상이 되는 두 문자열을 반드시 인수로 모두 전달해야 합니다.
STRCMP() 함수 기본 문법
STRCMP(Str1, Str2)
- Str1: 비교에 사용되는 첫 번째 문자열입니다.
- Str2: 비교에 사용되는 두 번째 문자열입니다.
기본 사용 예제
mysql> Select STRCMP('MySQL', 'MySQL');
+--------------------------+
| STRCMP('MySQL', 'MySQL') |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (0.00 sec)
mysql> Select STRCMP('MSQL', 'MySQL');
+-------------------------+
| STRCMP('MSQL', 'MySQL') |
+-------------------------+
| -1 |
+-------------------------+
1 row in set (0.00 sec)
mysql> Select STRCMP('MySQL', 'MSQL');
+-------------------------+
| STRCMP('MySQL', 'MSQL') |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)위 예제에서 확인할 수 있듯이, STRCMP() 함수는 두 문자열을 비교한 뒤 그 결과에 따라 적절한 값을 반환합니다.
STRCMP() 함수가 반환하는 네 가지 결과값
STRCMP() 함수는 문자열 비교 후 다음과 같은 네 가지 종류의 결과를 반환할 수 있습니다.
- 결과값 0: 두 문자열이 완전히 같을 때 반환됩니다.
- 결과값 1: 두 번째 문자열이 첫 번째 문자열보다 작을 때(사전순으로 앞설 때) 반환됩니다.
- 결과값 -1: 첫 번째 문자열이 두 번째 문자열보다 작을 때(사전순으로 앞설 때) 반환됩니다.
- 결과값 NULL: 인수 중 하나라도 NULL이거나 두 인수가 모두 NULL일 때 반환됩니다.
다양한 경우를 한 번에 확인하는 예제
mysql> Select STRCMP('Test', 'Test')As 'Equal Strings', STRCMP('TestABC', 'Test')AS '2nd Smaller', STRCMP('Test', 'TestABC')AS '1st Smaller', STRCMP('Test', NULL)As '2nd NULL',STRCMP(NULL, 'Test')AS '1st NULL',STRCMP(NULL,NULL)AS 'Both NULL';
+---------------+-------------+-------------+----------+----------+-----------+
| Equal Strings | 2nd Smaller | 1st Smaller | 2nd NULL | 1st NULL | Both NULL |
+---------------+-------------+-------------+----------+----------+-----------+
| 0 | 1 | -1 | NULL | NULL | NULL |
+---------------+-------------+-------------+----------+----------+-----------+
1 row in set (0.00 sec)위 쿼리는 하나의 SELECT 문으로 여러 비교 상황을 동시에 점검한 예입니다. 같은 문자열끼리 비교하면 0, 두 번째 문자열이 더 작으면 1, 첫 번째 문자열이 더 작으면 -1이 반환되며, 어느 한쪽이라도 NULL이면 결과 역시 NULL이 나오는 것을 확인할 수 있습니다.
참고 사항
STRCMP() 함수의 비교 결과는 데이터베이스나 연결에 설정된 문자셋(character set)과 콜레이션(collation)의 영향을 받을 수 있습니다. 특히 한글이나 대소문자가 섞인 문자열을 다룰 때는 사용 중인 콜레이션이 대소문자를 구분하는지(CS) 구분하지 않는지(CI)를 함께 고려하면 보다 정확한 비교 결과를 얻을 수 있습니다.