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

MySQL CONCAT 함수로 특정 열 값과 레코드를 연결하는 방법

MySQL에서 CONCAT() 함수를 사용하면 여러 열의 값을 하나의 문자열로 합칠 수 있습니다. 이번 글에서는 테이블의 이름과 국가 코드를 연결한 뒤, HAVING 절을 활용해 원하는 레코드만 조회하는 방법을 단계별로 알아보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
   FirstName varchar(100),
   CountryName varchar(100)
);
Query OK, 0 rows affected (0.56 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('Adam','US');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('David','AUS');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Chris','UK');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('John','US');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('Carol','AUS');
Query OK, 1 row affected (0.14 sec)

3. 전체 레코드 확인하기

SELECT 문을 사용해 테이블의 모든 데이터를 조회합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-----------+-------------+
| FirstName | CountryName |
+-----------+-------------+
| Adam | US |
| David | AUS |
| Chris | UK |
| John | US |
| Carol | AUS |
+-----------+-------------+
5 rows in set (0.00 sec)

4. CONCAT으로 열 값 연결 후 원하는 레코드 조회하기

아래 쿼리는 FirstNameCountryName을 공백으로 구분하여 하나의 문자열로 연결하고, 별칭(Alias)을 지정한 뒤 HAVING 절로 'John'이 포함된 레코드만 필터링합니다.

mysql> select concat(FirstName,' ',CountryName) AS NameWithCountry from DemoTable
having NameWithCountry LIKE '%John%';

실행 결과는 다음과 같습니다.

+-----------------+
| NameWithCountry |
+-----------------+
| John US |
+-----------------+
1 row in set (0.00 sec)

핵심 포인트 정리

  • CONCAT(열1, ' ', 열2): 두 열의 값을 지정한 구분자(여기서는 공백)와 함께 하나의 문자열로 합칩니다.
  • AS 별칭: 연결된 결과에 읽기 쉬운 이름을 부여합니다.
  • HAVING + LIKE: SELECT 절에서 정의한 별칭을 기준으로 조건 필터링이 가능합니다. WHERE 절에서는 별칭을 사용할 수 없지만, HAVING 절에서는 사용할 수 있다는 점이 유용합니다.

이처럼 CONCAT 함수와 HAVING 절을 조합하면 여러 열을 연결한 값 기준으로 손쉽게 레코드를 검색할 수 있습니다.