MySQL 내장 함수
숫자 관련 함수
함수 | 기능 |
---|
ABS(숫자) | 절대값 출력 |
CEILING(숫자) | 값보다 큰 정수 중 가장 작은수 |
FLOOR(숫자) | 값보다 작은 정수 중 가장 큰 정수 (실수를 무조건 버림) |
ROUND(숫자, 자리수) | 숫자를 소숫점 이하 자리수에서 반올림 (자릿수는 양수, 0, 음수 가능) |
TRUNCATE(숫자, 자리수) | 숫자를 소수점 이하 자리수에서 버림 |
POW(X, Y) | X의 Y승 |
MOD(분자, 분모) | 나머지 연산 (%) |
GREATEST(n1, n2, n3, ...) | 주어진 수 중 제일 큰 수 |
LEAST(n1, n2, n3, ...) | 주어진 수중 제일 작은 수 |
FORMAT(숫자, 자리수) | 주어진 숫자에 천 단위 쉼표 구분과 소숫점 이하의 자리수 설정 |
SELECT 3, ABS(3), ABS(-3) FROM DUAL;
SELECT ROUND(7777.56789), ROUND(7777.56789 ,1), ROUND(7777.56789 ,4), ROUND(7777.56789 ,-1) , ROUND(7777.56789 ,-2) FROM DUAL;
SELECT TRUNCATE(7777.56789 ,1), TRUNCATE(7777.56789 ,4), TRUNCATE(7777.56789 ,-1), TRUNCATE(7777.56789 ,-2) FROM DUAL;
SELECT 5%3, mod(5,3) FROM DUAL;
SELECT CEILING(3.14), FLOOR(3.14), GREATEST(1,2,3,4,5), LEAST(1,2,3,4,5) FROM DUAL;
SELECT FORMAT(123456789.123456, 3) as "소수점 쉼표구분",
FORMAT(123456789, 4) as "정수 쉼표구분", FORMAT(123456789, 0) as "소수점이하 없이 정수 쉼표구분";
문자 관련 함수
함수 | 기능 |
---|
ASCII(문자) | 문자의 아스키 코드값 리턴 |
CONCAT('s1', 's2', 's3', ...) | 문자열 연결 |
CONCAT_WS('구분자', 's1', 's2', 's3', ...) | 구분자와 함께 문자열 연결 |
INSERT(‘문자열’,’시작위치’,’길이’,’새 문자열’) | 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치 |
REPLACE(‘문자열’,’기존문자열’,’바뀔문자열’) | 기존 문자열을 바뀔 문자열로 대치 |
INSTR(‘문자열’,’찾는문자열’) | 문자열 중 찾는 문자열의 위치값을 출력 |
MID(‘문자열’,시작위치, 개수) | 문자열 중 시작위치부터 개수만큼 출력(시작 : 1) |
SUBSTRING(‘문자열’,시작위치,개수) | 문자열 중 시작위치부터 개수만큼 출력 |
LTRIM(‘문자열’) | 문자열의 왼쪽 공백 제거 |
RTRIM(‘문자열’) | 문자열의 오른쪽 공백 제거 |
TRIM(‘문자열’) | 양쪽 공백 모두 제거 |
LCASE(‘문자열’) or LOWER(‘문자열’) | 소문자로 변환 |
UCASE(‘문자열’) or UPPER(‘문자열’) | 대문자로 변환 |
REVERSE(‘문자열’) | 문자열 반전 |
LEFT(‘문자열’, 개수) | 문자열 중 왼쪽에서 개수만큼 추출 |
RIGHT(‘문자열’, 개수) | 문자열 중 오른쪽에서 개수만큼 추출 |
CHAR_LENGTH(‘문자열’ ) | 문자의 개수 반환 |
LENGTH(‘문자열’) | 할당된 Byte 수 반환 |
SELECT 'A', ASCII('A'), ASCII(' ') FROM DUAL;
SELECT CONCAT('java',' 화이팅') AS 화이팅;
SELECT CONCAT_WS('**','sql',' 화이팅') AS '화이팅 !!';
SELECT CONCAT(ename,'의 급여는 ', sal, '입니다.') AS 명세 FROM EMP;
SELECT '20200331', SUBSTRING('20200331',1,4) AS year
, SUBSTRING('20200331',5,2) AS month
, MID('20200331',7,2) AS day;
SELECT TRIM(' java '), RTRIM(' java '), TRIM(BOTH 'ㅋ' FROM 'ㅋㅋjdbcㅋㅋㅋ');
논리 관련 함수
함수 | 기능 |
---|
IF(논리식, 참일때 값, 거짓일 때 값) | 논리식이 참이면 참일 때 값을 출력하고 거짓이면 거짓일 때 값을 출력 java 3항연산자와 비슷 (Conditon ? trueCase : falseCase ) |
IFNULL(값1, 값2) | 값1이 NULL이면 값2로 대치하고 그렇지 않으면 값1을 출력 |
논리 관련 구문
CASE value
WHEN compare_value THEN result
[WHEN compare_value THEN result ...]
[ELSE result] END
CASE
WHEN condition THEN result
[WHEN condition THEN result ...]
[ELSE result] END
날짜 관련 함수
함수 | 기능 |
---|
NOW(), SYSDATE(), CURRENT_TIMESTAMP() | 현재 날짜와 시간 출력 |
CURDATE(), CURRENT_DATE() | 현재 날짜 출력 |
CURTIME(), CURRENT_TIME() | 현재 시간 출력 |
DATE_ADD(날짜, 기준값) | 날짜에서 기준 값만큼 더한다 |
DATE_SUB(날짜, 기준값) | 날짜에서 기준 값만큼 뺀다 |
YEAR(날짜) | 날짜의 연도 출력 |
MONTH(날짜) | 날짜의 월 출력 |
MONTHNAME(날짜) | 날짜의 월을 영어로 출력 |
DAYNAME(날짜) | 날짜의 요일을 영어로 출력 |
DAYOFMONTH(날짜) | 날짜의 월별 일자 출력 |
DAYOFWEEK(날짜) | 날짜의 주별 일자 출력 (일 ~ 토 / 1 ~ 7) |
WEEKDAY(날짜) | 날짜의 주별 일자 출력 (월 ~ 일 / 0 ~ 6) |
DAYOFYEAR(날짜) | 일년을 기준으로한 날짜까지의 날 수 |
WEEK(날짜) | 일년 중 몇 번째 주 |
FROM_DAYS(날짜) | 00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 출력 |
TO_DAYS(날짜) | 00년 00월 00일부터 날짜까지의 일자 수 출력 |
DATE_FORMAT(날짜,’형식’) | 날짜를 형식에 맞게 출력 |
TIMESTAMPDIFF(형식, 날짜1, 날짜2) | 두 날짜 사이의 형식 차이 계산 (형식 : year, month, day, hour, minute, second) |
DATEDIFF(날짜1, 날짜2) | 두 날짜 사이의 일수 차이 계산 |
SELECT NOW(6), SYSDATE(6) FROM DUAL;
SELECT ename, hiredate, NOW(), NOW()-hiredate, DATEDIFF(NOW(), hiredate), YEAR(hiredate), MONTH(hiredate), DAY(hiredate) FROM emp;
SELECT ename, WEEKDAY(hiredate) FROM EMP;
SELECT
CASE WEEKDAY(NOW())
WHEN '0' THEN '월요일'
WHEN '1' THEN '화요일'
WHEN '2' THEN '수요일'
WHEN '3' THEN '목요일'
WHEN '4' THEN '금요일'
WHEN '5' THEN '토요일'
WHEN '6' THEN '일요일'
END AS '오늘의 요일';
SELECT DATE_FORMAT(NOW(), "%Y년 %y년");
SELECT DATE_FORMAT('2021-01-03', "%m월 %c월");
SELECT DATE_FORMAT('2021-01-03', "%d일 %e일");
SELECT DATE_FORMAT(NOW(), "%H시 %h시 %l시");
SELECT DATE_FORMAT(NOW(), "%T %r");
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 1 MINUTE);
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 1 HOUR);
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY);
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 1 MONTH);
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 1 YEAR);