코딩공부/DBMS

DBMS(MySQL)_문자열함수

diary100 2023. 3. 23. 15:46

데이터 테이블

member

 

orders

 

1.concat : 복수의 문자열을 연결해주는 함수
select concat('안녕','하세요') as concat;


select address1,address2,address3 from member where userid='orange';

 


#이것을 하나의 컬럼으로 내보내고 싶다.
select concat(address1,' ', address2,' ', address3) as 주소 from member where userid='orange';


2.left,right : 왼쪽 또는 오른쪽에서 길이만큼 문자열을 가져옴
select left('ABCDEFGHIJKLMN',5);
select right('ABCDEFGHIJKLMN',5);
select userid,left(email,5) as email  from member where userid='apple';

 

 

 

 
3.substring(문자열,시작위치,길이) : 문자열 일부를 가져옴
select substring('ABCDEFGHIJKLMN',3,2) as 추출 ;
select substring(address1,1,3) as 주소 from member where userid ='orange';

 

 


4.char_length: 문자열 길이를 반환
select char_length('ABCDEFGHIJKLMN')as 길이 ;
select char_length(email)as len from member; 

 

5.lpad,rpad : 왼쪽 또는 오른쪽의 해당 길이만큼 늘리고 빈 공간을 채울 문자열을 반환
select lpad('ABCDEFG',10,'0');
select lpad(point,5,'0') as lpad from member;

6.ltrim,rtrim,trim : 왼쪽 ,오른쪽,모든 공백을 제거
select ltrim('                ABCDEFG          ') as ltrim;
select rtrim('                ABCDEFG          ') as rtrim;
select trim('                 ABCDEFG          ') as trim;

 

 

7.replace : 문자열에서 특정 문자열을 변경
repalce(문자열,대상,바꿀문자열)

select replace('ABCDEFG','CD','✔') as repl;


 

 

오늘 배운 MySQL을 통해 문제를 해결해보자

조건

-상품을 2번 이상 구입한 사용자의 아이디,상품 구입횟수, 시도이름을 출력

-서브쿼리를 사용

 

 

select m.userid,t.ocnt,substring(m.address1,1,3) as address from member as m
right outer join 
(select userid,count(no) as ocnt from orders group by userid having count(no)>=2) as t
on m.userid =t.userid ;

-> join 절 안에 서브쿼리를 하나의 테이블로 사용하였다.

 

서브쿼리 사용하지 않고 join 만 사용할 시

 

select m.userid,count(o.no) as cnt,substring(m.address1,1,3) as address
from member as m right outer join orders as o on m.userid = o.userid group by userid
having cnt >=2;  

 

 

 

 

 

결과는 아래로 동일하다.