BACK-END

[MySQL] MySQL 함수

gudwns5533 2026. 6. 9. 16:18

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