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

MySQL에서 함수를 결합(중첩)하는 방법

MySQL에서는 하나의 함수를 다른 함수의 인수(argument)로 전달하는 방식으로 여러 함수를 결합할 수 있습니다. 이러한 기법을 함수의 중첩(Nesting)이라고 부르며, SQL 문장을 더 간결하고 효율적으로 작성하는 데 유용하게 활용됩니다.

함수 중첩의 기본 원리

중첩된 함수는 안쪽에 위치한 함수부터 먼저 실행되며, 그 결과값이 바깥쪽 함수의 입력값으로 전달됩니다. 즉, 내부 함수의 반환 값이 외부 함수의 인수가 되는 구조입니다.

아래 예제를 통해 함수 중첩이 실제로 어떻게 동작하는지 확인해 보겠습니다.

mysql> Select UPPER(CONCAT('www.','tutorialspoint','.com')) As Tutorials;
+------------------------+
| Tutorials              |
+------------------------+
| WWW.TUTORIALSPOINT.COM |
+------------------------+
1 row in set (0.00 sec)

mysql> Select LOWER(CONCAT('WWW.','TUTORIALSPOINT','.COM')) As Tutorials;
+------------------------+
| Tutorials              |
+------------------------+
| www.tutorialspoint.com |
+------------------------+
1 row in set (0.00 sec)

예제 분석

위의 두 쿼리는 문자열을 연결하는 CONCAT() 함수를 UPPER() 또는 LOWER() 함수와 결합한 사례입니다.

  • 첫 번째 쿼리: CONCAT()으로 연결된 문자열 'www.tutorialspoint.com'이 UPPER() 함수에 전달되어 모두 대문자로 변환됩니다.
  • 두 번째 쿼리: 반대로 대문자로 구성된 문자열이 LOWER() 함수에 전달되어 모두 소문자로 변환됩니다.

세 개 이상의 함수 결합

함수 중첩은 두 개에 국한되지 않습니다. 필요에 따라 세 개 이상의 함수도 계층적으로 조합할 수 있습니다. 예를 들어 아래와 같이 활용할 수 있습니다.

mysql> Select UPPER(SUBSTRING(CONCAT('www.','tutorialspoint','.com'), 5)) As Domain;
+------------------+
| Domain           |
+------------------+
| TUTORIALSPOINT.COM |
+------------------+
1 row in set (0.00 sec)

이처럼 함수를 중첩하면 별도의 임시 테이블이나 복잡한 절차 없이 한 번의 쿼리로 원하는 결과를 얻을 수 있어 코드의 가독성과 처리 효율이 모두 향상됩니다.