DBMS(MySQL)_문자열함수
데이터 테이블
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;
결과는 아래로 동일하다.