1. 문자열 함수
concat()
문자열을 이어 붙이는 함수
select concat('안녕하세요', 'MySQL');
-- 안녕하세요MySQL
left(), right()
문자열의 왼쪽 / 오른쪽 일부를 가져옴
select left('ABCDEFGHIJ', 3); -- ABC
select right('ABCDEFGHIJ', 4); -- GHIJ
substring()
문자열의 일부를 추출
select substring('ABCDEFGHIJ', 3, 4);
-- 3번째 문자부터 4글자 추출
-- CDEF
char_length(), length()
문자 개수, 바이트 수
select char_length('가나다');
select length('가나가'); -- 한글은 한글자에 3byte
-- 3
-- 9
trim(), ltrim(), rtrim()
공백 제거
select trim(' mysql ');
-- mysql
replace()
문자열 치환
select replace('010-1111-1111', '-', '');
select hp, replace(hp, '-', '') as 번호 from member;
-- 01011111111
lower(), upper()
소문자, 대문자 변환
select upper('mysql');
select email, upper(email) as '대문자' from member;
-- MYSQL
2. 수학 함수
abs()
절댓값
select abs(-100);
-- 100
round()
반올림
select round(3.141592, 2);
-- 3.14
ceil(), floor()
올림, 내림
select ceil(3.1);
select floor(3.9);
-- 4
-- 3
mod()
나머지
select mod(10,3);
-- 1
rand()
랜덤값 생성
select rand();
select * from member order by rand() limit 1;
-- 0.05728084506213744
truncate()
버림
select truncate(3.141592, 2);
-- 3.14
3. 날짜 함수
now()
현재 날짜 + 시간 (운영체제 시간 기준)
select now();
-- '2026-06-09 14:25:34'
curdate(), curtime()
현재 날짜와 시간을 각각 알려줌
select curdate();
select curtime();
-- '2026-06-09'
-- '14:30:25'
date_format()
날짜 포멧 변경
select date_format(now(), '%Y년 %m월 %d일 %H시 %i분 %s초');
-- '2026년 06월 09일 15시 42분 04초'
datediff()
날짜 차이 계산
select datediff('2026-12-17', now());
select datediff('2026-12-25', now());
-- 191
-- 199
adddate()
날짜 더하기
select adddate(now(), 30);
-- '2026-07-09 15:47:03'
subdate()
날짜 빼기
select subdate(now(), 7);
-- '2026-06-02 15:48:07'
dayofweek()
요일 숫자 반환
select dayofweek(now());
-- 3
-- 1: 일요일, 2: 월요일, 3: 화요일, 4: 수요일, 5: 목요일, 6: 금요일, 7: 토요일
year(), month(), day()
연, 월, 일 반환
select year(now());
select month(now());
select day(now());
-- 2026
-- 6
-- 9
4. 조건 함수
if()
조건 처리
select userid, if(point >= 100, 'VIP', '일반') from member;
ifnull()
null인지 확인, null 처리
select ifnull(regdate, '가입일 없음') from member;
-- null을 '가입일 없음'으로 처리
nullif()
두 값이 같으면 null 반환
select nullif(10, 10);
case when
여러 조건 처리
select userid,
case
when point >= 200 then 'VIP'
when point >= 100 then 'Gold'
else 'Normal'
end as 등급 from member;
5. 형변환 함수
cast()
자료형 변경
select cast('2026-06-08' as datetime);
-- '2026-06-08 00:00:00'
convert()
형 변환
select convert('-123', signed);
select convert('-123', unsigned);
-- '-123'
-- '18446744073709551493'
6. 집계 함수
count()
행 개수
select count(idx) from member;
-- 10
avg()
평균
select avg(point) from member;
-- 125
sum()
합계
select sum(point) from member;
-- 1250
max(), min()
최댓값 / 최솟값
select max(point) from member;
select min(point) from member;
-- 250
-- 50'BACK-END' 카테고리의 다른 글
| [MySQL] MySQL 연동 (0) | 2026.06.09 |
|---|---|
| [MySQL] 뷰 (view) (0) | 2026.06.09 |
| [MySQL] 서브쿼리 (Sub Query) (1) | 2026.06.09 |
| [MySQL] 정규화 (0) | 2026.06.06 |
| [MySQL] DML (0) | 2026.06.05 |