MySQL에서 이름(FirstName)과 성(LastName)의 첫 글자가 동일한 레코드를 조회하려면 LEFT() 함수를 활용해야 합니다. LEFT() 함수는 문자열의 왼쪽부터 지정한 개수만큼의 문자를 반환하며, 이를 조건 비교에 사용하면 원하는 결과를 쉽게 얻을 수 있습니다.
1. 샘플 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable789 ( FirstName varchar(100), LastName varchar(100) ); Query OK, 0 rows affected (0.78 sec)
2. 데이터 삽입
INSERT 명령어를 사용하여 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable789 values('Adam','Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable789 values('Tom','Taylor');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable789 values('Bob','Brown');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable789 values('David','Miller');
Query OK, 1 row affected (0.22 sec)3. 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable789;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | Adam | Smith | | Tom | Taylor | | Bob | Brown | | David | Miller | +-----------+----------+ 4 rows in set (0.00 sec)
4. 첫 글자가 같은 레코드 조회하기
이제 이름과 성의 첫 글자가 동일한 레코드만 필터링해 보겠습니다. WHERE 절에서 LEFT() 함수로 각 컬럼의 첫 번째 문자를 추출하고, 대소문자 구분 없이 비교하기 위해 UPPER() 함수를 함께 사용합니다.
mysql> select *from DemoTable789 where upper(left(FirstName,1))=upper(left(LastName,1));
실행 결과는 다음과 같습니다.
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | Tom | Taylor | | Bob | Brown | +-----------+----------+ 2 rows in set (0.00 sec)
결과 분석
조회 결과 'Tom'과 'Taylor', 'Bob'과 'Brown'처럼 첫 글자가 일치하는 두 개의 레코드만 반환되었습니다. 반면 'Adam Smith'(A vs S)와 'David Miller'(D vs M)는 첫 글자가 다르므로 결과에서 제외되었습니다.
추가 팁
UPPER() 대신 LOWER() 함수를 사용해도 동일한 결과를 얻을 수 있습니다. 또한 MySQL의 기본 콜레이션(collation)이 대소문자를 구분하지 않는 경우(CI 계열)에는 UPPER()나 LOWER() 없이 LEFT(FirstName,1) = LEFT(LastName,1)만으로도 비교가 가능합니다.