MySQL WHERE 절에서 CONCAT() 함수 활용하기
MySQL에서는 WHERE 절 안에서도 CONCAT() 함수를 사용할 수 있습니다. 이를 통해 여러 컬럼의 값을 하나로 연결한 문자열을 조건으로 삼아 데이터를 조회할 수 있습니다.
예제 시나리오
'Student' 테이블이 있다고 가정해 보겠습니다. 이 테이블에서 'Name', 'Address', 'Subject' 컬럼의 값을 연결하여 학생 정보를 보여주고 싶은데, 조회 조건 역시 WHERE 절에서 CONCAT() 함수를 사용해 'Name'과 'Subject' 컬럼 값을 연결한 문자열로 지정하려고 합니다.
이 경우 다음과 같은 쿼리를 사용할 수 있습니다.
mysql> Select CONCAT(Name, ' ', 'Resident of', ' ', Address,' ','is',' ', 'Studying',' ', Subject)AS 'Detail of Student' from Student WHERE CONCAT(Name, Subject) = "AaravHistory"; +----------------------------------------------+ | Detail of Student | +----------------------------------------------+ | Aarav Resident of Mumbai is Studying History | +----------------------------------------------+ 1 row in set (0.00 sec)
쿼리 설명
위 쿼리가 동작하는 방식을 살펴보면 다음과 같습니다.
1. SELECT 절의 CONCAT(): 'Name', 'Address', 'Subject' 컬럼의 값들을 'Resident of', 'is', 'Studying' 같은 문자열과 함께 연결하여 하나의 문장 형태로 만듭니다. 결과는 'Detail of Student'라는 별칭(alias)으로 출력됩니다.
2. WHERE 절의 CONCAT(): 조건 부분에서도 CONCAT() 함수를 사용해 'Name'과 'Subject' 컬럼의 값을 공백 없이 연결합니다. 그리고 그 결과가 "AaravHistory"와 일치하는 행만 필터링합니다.
실행 결과
조건에 맞는 행은 이름이 'Aarav'이고 과목이 'History'인 학생뿐이므로, 최종 출력 결과는 다음과 같습니다.
| Aarav Resident of Mumbai is Studying History |
이처럼 WHERE 절에서 CONCAT() 함수를 활용하면 여러 컬럼을 조합한 복합적인 조건 검색이 가능해져, 단일 컬럼 비교로는 처리하기 어려운 요구 사항도 손쉽게 해결할 수 있습니다.