기록 > 기억
[MySQL] 내장 함수 본문
내장 함수
● 문자 함수
# ASCII(문자) → 문자의 아스키코드 값 반환
SELECT ASCII('A');
-- 65
# CONCAT(문자열1, 문자열2, ...) → 문자열 결합 *****
SELECT CONCAT('I', ' love', ' you');
-- I love you
# INSERT(문자열, 시작위치, 개수, 새 문자열) → 문자열의 시작위치부터 길이만큼 새 문자열로 변경
SELECT INSERT('I love you', 3, 4, 'hate');
-- I hate you
# REPLACE(문자열, 찾을 문자열, 새 문자열) → 문자열에서 찾은 문자열을 새 문자열로 변경
SELECT REPLACE('I love you', 'you', 'her');
-- I love her
#LEFT(문자열, 개수) → 문자열의 왼쪽에서부터 5개 반환
SELECT LEFT('watermelon', 5);
-- water
#RIGHT(문자열, 개수) → 문자열의 오른쪽에서부터 5개 반환
SELECT RIGHT('watermelon', 5);
-- melon
#MID(문자열, 시작위치, 개수) → 문자열의 시작위치부터 개수 반환
SELECT MID('watermelon', 3, 4);
-- term
#TRIM(문자열) → 양쪽 공백 제거 (문자열 사이의 공백은 제거 안함!!) *****
SELECT TRIM(' My SQL ');
-- My SQL
#LOWER(문자열) → 소문자로 변경
SELECT LOWER('study HARD')
-- study hard
#UPPER(문자열) → 대문자로 변경
SELECT UPPER('study HARD');
-- STUDY HARD
#REVERSE(문자열) → 문자열을 반대로 뒤집음
SELECT REVERSE('database');
-- esabatad
#FORMAT(숫자, 자리수) → 천단위 분리기호 및 소수점 자리수까지 반올림 *****
SELECT 12345.6789, FORMAT(12345.6789, 2);
-- 12,345.68
● 숫자 함수
#ABS(숫자) → 절대값
SELECT ABS(-10);
-- 10
#CEIL(숫자) → 소수점 올림
SELECT CEIL(10.1), CEIL(-10.1), CEIL(10), CEIL(-10);
-- 11 -10 10 -10
#FLOOR(숫자) → 소수점 내림
SELECT FLOOR(10.1), FLOOR(-10.1), FLOOR(10), FLOOR(-10);
-- 10 -11 10 -10
#ROUND(숫자, 자리수) → 반올림
SELECT
ROUND(1234.5678, 2), -- 1234.57 → 소수점 둘째 자리수까지 반올림해서 반환
ROUND(1234.5678, 0), -- 1235 → 정수까지 반올림해서 반환
ROUND(1234.5678, -2); -- 1200 → 왼쪽 두번째(십의자리)에서 반올림해서 반환
#MOD(분자, 분모) → 나머지
SELECT MOD(7, 4), MOD(9, 10);
-- 3 9
#TRUNCATE(숫자, 자리수) → 소수점 이하 자리수 버림 [MySQL에만 있는 함수]
SELECT
TRUNCATE(1234.5678, 1), -- 1234.5 → 소수점 첫째 자리수까지 반환
TRUNCATE(1234.5678, 2), -- 1234.56 → 소수점 둘째 자리수까지 반환
TRUNCATE(1234.5678, -1), -- 1230 → 왼쪽 첫번째(일의자리)에서 버림해서 반환
TRUNCATE(1234.5678, -2); -- 1200 → 왼쪽 두번째(십의자리)에서 버림해서 반환
#GREATEST(숫자1, 숫자2, ...) → 숫자 중 가장 큰 수를 반환
SELECT GREATEST(15, 6, 179, 10);
-- 179
#LEAST(숫자1, 숫자2, ...) → 숫자 중 가장 작은 수를 반환
SELECT LEAST(15, 6, 179, 10);
-- 6
● 집계 함수
#SUM(컬럼명) : 합계
SELECT SUM(amount) FROM payments;
-- 8853839.23
#AVG(컬럼명) : 평균
SELECT AVG(amount) FROM payments;
-- 32431.645531
#MAX(컬럼명) : 최대값
SELECT MAX(amount) FROM payments;
-- 120166.58
#MIN(컬럼명) : 최소값
SELECT MIN(amount) FROM payments;
-- 615.45
#COUNT(컬럼명) : 레코드(행) 개수 → NULL값은 카운트 하지 않음!!!
SELECT COUNT(customerNumber) FROM payments;
-- 273
● 논리 함수
#IF(조건식, 참일때 값, 거짓일때 값) → 삼항 연산식이랑 똑같음
SELECT
IF(10 > 9, 'true', 'false'), -- true
IF(10 < 9, 'true', 'false'); -- false
#IFNULL(값1, 값2) → '값1'이 NULL이면 '값2'로 바꾸고, '값1'이 NULL이 아니면 '값1' 반환
SELECT
IFNULL(NULL, 'X'), -- X
IFNULL('O', ''); -- O
● 날짜 함수
#SYSDATE(), NOW() = CURRENT_TIMESTAMP() → 현재 날짜 및 시간
SELECT
SYSDATE(), -- 2021-10-18 12:10:47
NOW(), -- 2021-10-18 12:10:47
CURRENT_TIMESTAMP(); -- 2021-10-18 12:10:47
#CURDATE(), CURRENT_DATE() → 현재 날짜
SELECT
CURDATE(), -- 2021-10-18
CURRENT_DATE(), -- 2021-10-18
DATE(NOW)); -- 2021-10-18
#CURTIME(), CURRENT_TIME() → 현재 시간
SELECT
CURTIME(), -- 12:20:03
CURRENT_TIME(), -- 12:20:03
TIME(NOW()); -- 12:20:03
#DATE_ADD(날짜, INTERVAL 더할값) → 날짜에 연/월/일/시/분/초를 더함
SELECT
NOW(), -- 2021-10-18 12:31:05
DATE_ADD(NOW(), INTERVAL 10 DAY); -- 2021-10-28 12:31:05 (+10일)
#DATE_SUB(날짜, INTERVAL 뺄값) → 날짜에 연/월/일/시/분/초를 뺌
SELECT
NOW(), -- 2021-10-18 12:32:07
DATE_SUB(NOW(), INTERVAL 24 HOUR); -- 2021-10-17 12:32:07 (-24시간)
#YEAR(날짜) → 연도를 반환
SELECT YEAR(NOW()), YEAR('2014-04-13'); -- 2021 2014
#MONTH(날짜) → 월을 반환
SELECT MONTH(NOW()), MONTH('2014-04-13'); -- 10 4
#DAY(날짜) → 일을 반환
SELECT DAY(NOW()), DAY('2014-04-13'); -- 18 13
#DAYOFMONTH(날짜) → 일을 반환
SELECT DAYOFMONTH(NOW()), DAYOFMONTH('2014-04-13'); -- 18 13
#DAYOFWEEK(날짜) → 주 기준 몇번째 일 [ 1(일) ~ 7(토) ]
SELECT DAYOFWEEK(NOW()); -- 2
#WEEKDAY(날짜) → 주 기준 몇번째 일 [ 0(월) ~ 6(일) ]
SELECT WEEKDAY(NOW()); -- 0
#DAYOFYEAR(날짜) → 연 기준 몇번째 일 (? 일 / 365일)
SELECT DAYOFYEAR(NOW()); -- 291
#WEEK(날짜) → 연 기준 몇번째 주 (? 주 / 1년)
SELECT WEEK(NOW()); -- 42
#DATE_FORMAT(날짜, 포맷) → 날짜 형식 설정
SELECT DATE_FORMAT(NOW(), '%y년 %m월 %d일(%W) %H:%i:%s');
-- 21년 10월 18일(Monday) 12:53:51
'IT국비지원' 카테고리의 다른 글
[JAVA] 변수와 형변환 (0) | 2021.10.24 |
---|---|
[JAVA] 자바 프로그램 (0) | 2021.10.22 |
[MySQL] 프로시저 (Procedure) (0) | 2021.10.18 |
[MySQL] INSERT / UPDATE / DELETE 문 (0) | 2021.10.18 |
[MySQL] EXISTS (0) | 2021.10.18 |
[MySQL] GROUP BY / HAVING (0) | 2021.10.18 |
[MySQL] 서브쿼리 (Subquery) (0) | 2021.10.18 |
Comments