본문 바로가기

Database/mysql

[mysql] CONCAT 사용하여 데이터 합치기

반응형

mysql에서 데이터를 관리할 때

모든 데이터에 동일한 값을 추가할 일이 발생할 수 있습니다.

 

아래와 같이 입력한다면 원하는 데이터에서

데이터를 합칠 수 있습니다.

 

1. 테스트 용 DB, table 생성

mysql
mysql > create database test;
mysql > use test
mysql > create table CONCAT_TEST (number int primary key auto_increment, name varchar(50) not null, phone varchar(50));

 

mysql DB, table 생성

 

 

필자의 경우 phone 칼럼 생성을 누락하여 아래와 같이 추가하였습니다.

위에서 정상적으로 생성하였다면 생략하시면 됩니다.

mysql
mysql> alter table CONCAT_TEST add column phone varchar(50);

 

빠진 phone 컬럼을 추가

 

 

 

2. 생성된 table 정보 확인

mysql
mysql > show tables;
mysql > desc CONCAT_TEST;

※ desc 의 경우 명령어 뒤에 table 명을 입력하여

   table의 key, type, column name, default 등 상세 정보를 확인할 수 있는 명령어입니다.

 

생성 된 테이블과 세부 정보

 

 

 

3. CONCAT_TEST 테이블에 테스트용 데이터를 입력합니다.

mysql
mysql > insert into CONCAT_TEST (name, phone) values
('진구', '1234-5678')
,('철수', '1234-1234')  
,('미영', '4567-4567')
,('호식', '011-678-4564');


mysql > select * from CONCAT_TEST;

 

CONCAT_TEST 테이블에 데이터 입력

 

 

 

4. CONCAT을 사용하여 합칠 테이터를 먼저 찾습니다.

진구, 철수, 미영의 phone의 앞에 [010-] 데이터가 누락되어 있습니다.

먼저 select 명령어를 사용하여 진구, 철수, 미영만 적용되는 것이 맞는지 확인합니다.

이 동작은 실제 데이터를 변경하지 않습니다.

 

mysql
mysql > select concat("010-", phone) from CONCAT_TEST where phone not like "___-%";

select concat("[앞에 추가할 데이터]", [칼럼 명]) from [테이블 명] where [조건]

 

select 명령어를 사용하여 변경할 데이터 미리 보기

반대로 적용 또한 가능합니다.

mysql
mysql > select concat(phone, "-010") from CONCAT_TEST where phone not like "___-%";

 

concat 반대로 적용

 

 

5. CONCAT을 사용하여 실제 데이터를 변경합니다.

변경 전 데이터는 아래와 같습니다.

mysql
mysql > select * from CONCAT_TEST;

 

변경 전 데이터

 

 

update, concat을 사용하여 실제 데이터를 변경합니다.

mysql
mysql > update CONCAT_TEST set phone = concat("010-", phone) where  phone not like "___-%";
mysql > select * from CONCAT_TEST;

 

변경 명령어, 변경 된 데이터 확인

 

 

데이터가 정상적으로 변경된 것을 확인할 수 있습니다.

반응형