Notice
Recent Comments
Recent Posts
«   2025/02   »
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
Today
Total
관리 메뉴

기록 > 기억

[MySQL] 내장 함수 본문

IT국비지원

[MySQL] 내장 함수

BY SON 2021. 10. 18. 10:21

내장 함수

 

● 문자 함수

# 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