250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- discard()
- HTML
- shuffle()
- shutil
- node.js
- locals()
- remove()
- Database
- View
- inplace()
- fileinput
- MySQL
- mro()
- fnmatch
- decode()
- items()
- 오버라이딩
- count()
- glob
- __annotations__
- CSS
- choice()
- zipfile
- __getitem__
- 파이썬
- __sub__
- randrange()
- JS
- __len__
- MySqlDB
Archives
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(MySQL) 기초 문법(문자열 함수) 본문
728x90
반응형
member 테이블
select * from member;
concat
- 복수의 문자열을 연결해주는 함수
select concat('안녕', '하세요') as concat;
select concat(address1, ' ', address2, ' ', address3) as address from member where userid='orange';
left, right
- 왼쪽 또는 오른쪽에서 길이만큼 문자열을 가져옴
select left('ABCDEFGHIJKLMN', 5);
select userid, left(email, 5) as email from member where userid='apple';
substring
- 문자열의 일부를 가져옴
# substring(문자열, 시작위치, 길이)
select substring('ABCDEFGHIJKLMN', 3, 2);
select substring(address1, 1, 3) as 주소 from member where userid='orange';
char_length
- 문자열의 길이를 반환
select char_length('ABCDEFGHIJKLMN');
select char_length(email) as len from member;
lpad, rpad
- 왼쪽 또는 오른쪽의 해당 길이만큼 늘리고 빈 공간을 채울 문자열을 반환
select lpad('ABCDEFG', 10, '0');
select lpad(point, 5, 0) as lpad from member;
ltrim, rtrim, trim
- 왼쪽, 오른쪽, 모든 공백을 제거
select ltrim(' ABCDEFG ') as ltrim;
select trim(' ABCDEFG ') as trim;
replace
- 문자열에서 특정 문자열을 변경
# replace(문자열, 대상, 바꿀 문자열)
select replace('ABCDEFG', 'CD', '✅') as repl;
문제
- 상품을 2개이상 구입한 사용자의 아이디, 상품 구입횟수, 시도이름을 출력
- 서브쿼리를 사용
orders 테이블
select * from orders;
나의 풀이
select m.userid, o.cnt, substring(m.address1, 1, 3) as address from member as m
inner join
(select userid, count(no) as cnt from orders group by userid having cnt >= 2) as o on m.userid = o.userid;
강사님 풀이 (조인 사용)
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;
강사님 풀이 (from절)
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;
728x90
반응형
'MySQL' 카테고리의 다른 글
(MySQL) 사용자 (1) | 2023.03.21 |
---|---|
(MySQL) 기초 문법(테이블 복사) (0) | 2023.03.20 |
(MySQL) 기초 문법(서브 쿼리) (0) | 2023.03.20 |
(MySQL) 기초 문법(유니온) (1) | 2023.03.20 |
(MySQL) 기초 문법(auto_increment) (0) | 2023.03.20 |
Comments