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

MySQL에서 이름과 성의 첫 글자가 같은 레코드 조회하는 방법

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)만으로도 비교가 가능합니다.