은은하게 코드 뿌시기

오라클/MYSQL 함수 종류 비교 본문

Database -Mysql,Oracle

오라클/MYSQL 함수 종류 비교

은은하게미친자 2022. 6. 29. 17:46
728x90
함수명 설명 예제 MYSQL 확인
UPPER(문자열) 대문자로 변환하여 반환   select upper(ENAME), lower(ENAME), INITCAP(ENAME)  FROM EMP; O
LOWER(문자열) 소분자로 변환하여 반환 O
INITCAP(문자열) 괄호안 문자데이터중 첫글자는 대문자로, 나머지는 소문자로 변환후 반환 함수 없음!

SUBSTR(문자열데이터, 시작위치, 추출길이(선택)) 문자열 데이터를 시작 위치부터 추출길이만큼 추출합니다. 추출 길이 없을경우 마지막까지 추출  select JOB, SUBSTR(JOB,2) , SUBSTR(JOB,1,2)  FROM EMP; O
INSTR(문자열
, 위치를 찾으려는 부분문자
, 시작위치(선택)
, 몇번째인지지정(선택))
문자열이 어디에 포함되어있는지 확인시 사용 SELECT INSTR('HELLO WORLD','L'), INSTR('HELLO WORLD','L',5),  INSTR('HELLO WORLD','L',2,2) FROM DUAL; SELECT INSTR('FOOBAR','BAR');
REPLACE(문자열, 찾는문자열, 대체할문자(선택)) 다른문자로 바꾸는 함수! select JOB , replace(JOB, 'A' ,'Q')  FROM EMP; 대체할 문자 생략 불가.
LPAD(문자열,자릿수,채울문자(선택))
RPAD(문자열,자릿수,채울문자(선택))
데이터의 빈 공간을 설정한 자리수 만큼 설정한 문자로 채운다. SELECT lpad(ENAME,10,'@'), RPAD(ENAME,10,'@') FROM EMP; 채울문자 필수입력
CONCAT(문자열,문자열) 두 문자열 데이터를 합친다.   SELECT concat(ENAME, JOB) 
FROM EMP;
O
TRIM(삭제옵션(선택), 삭제할문자(선택), 원본문자열 데이터 (필수)) 특정 문자를 지움   SELECT trim( ENAME), trim('A' FROM ENAME), trim(LEADING 'A' FROM ENAME), trim(TRAILING 'S' FROM ENAME)  FROM EMP; O
LTRIM(원본문자열, 삭제할문자(선택))
RTRIM(원본문자열, 삭제할문자(선택))
왼쪽, 오른족 지정문자를 삭제 SELECT Ltrim( ENAME), Rtrim( ENAME) FROM EMP; 선택문자열 없음 공백만 삭제
ROUND(숫자, 반올림위치(선택)) 특정위치에서반올림  select ROUND(SAL, 1), ROUND(SAL) FROM EMP; O
TRUNC(숫자, 버림위치(선택)) 특정위치에서 버림   TRUNCATE(숫자, 버림위치(필수))
CEIL(숫자) 지정한 숫자와 가까운 큰 정수를 찾음   SELECT CEIL(3.141592), FLOOR(3.141592); O
FOOR(숫자) 지정한 숫자와 가까운 작은 정수
MOD(나눗셈될숫자, 나눌숫자) 숫자를 나눈 나머지 값을 구함   SELECT MOD(3.141592,3); O
날짜관련 
SYSDATE 날짜 데이터   SELECT SYSDATE AS NOW, SYSDATE+1 AS TOMORROW,SYSDATE -1 AS YESTERDAY FROM DUAL;   SELECT SYSDATE(), NOW(), NOW()+1, NOW()-1; 
ADD_MONTH((날짜데이터), 더할 개월수) 몇개월 이후의 날짜를 구함  SELECT sysdate, ADD_MONTHS(SYSDATE,3) FROM DUAL; 없음
DATE_ADD사용
DATEADD(NOW(), INTERVAL 1 MONTH)
*mysql 함수 
DATE_ADD(date, INTERVAL expr unit)
시간 더하기 *MYSQL
select date_add(now(), interval 1 day), date_add(now(), interval 1 hour), date_add('20211018', interval 1 month);
*mysql 함수 
DATE_SUB(date, INTERVAL expr unit)
시간빼기 *MYSQL
select date_sub(now(), interval 1 day), date_sub(now(), interval 1 hour), date_sub('20211018', interval 1 month);
MONTHS_BETWEEN(날짜 데이터1, 날짜 데이터 2) 두 날짜 간의  개월수 차이를 구함. select months_between(hiredate,sysdate) from emp; 없음
*mysql 함수
DATEDIFF(날짜데이터1, 날짜데이터2)
두날짜 사이의 차이를 구함 *MYSQL 
SELECT datediff(NOW(),'20220620')
NEXT_DAY(날짜데이터, 요일문자) 돌아오늘 요일,달 마지막 날짜를 구함 SELECT SYSDATE, NEXT_DAY(SYSDATE,'월요일'), LAST_DAY(SYSDATE) FROM DUAL 없음
LAST_DAY(날짜데이터) 속한 달의 마지막 날짜를 출력
ROUND(날짜, 포맷) 날짜 반올림 SELECT round(NOW() , 'CC'), round(NOW() , 'YYYY'),round(NOW() , 'Q'),round(NOW() , 'DDD'),round(NOW() , 'HH'),
TRUNC(NOW() , 'CC'), TRUNC(NOW() , 'YYYY'),TRUNC(NOW() , 'Q'),TRUNC(NOW() , 'DDD'),TRUNC(NOW() , 'HH');
SELECT round(NOW() , 'CC'), round(NOW() , 'YYYY'),round(NOW() , 'Q'),round(NOW() , 'DDD'),round(NOW() , 'HH'),
TRUNCATE(NOW() , 'CC'), TRUNCATE(NOW() , 'YYYY'),TRUNCATE(NOW() , 'Q'),TRUNCATE(NOW() , 'DDD'),TRUNCATE(NOW() , 'HH');
TURUNC(날짜, 포맷) 날짜 버림
TO_CHAR 날짜 , 숫자데이터를 문자 데이터로 변환 SELECT TO_CHAR(SYSDATE(), 'YYYY/MM/DD HH24:MI:SS') 없음 
DATE_FORMAT함수 써야함
*MY SQL
DATE_FORMAT(날짜, 포맷)
*MYSQL
SELECT DATE_FORMAT(SYSDATE(), '%Y-%M-%D');
TO_NUMBER 문자데이터를 숫자데이터로 변환  SELECT TO_NUMBER('1') FROM DUAL; CAST 함수써야함
*MYSQL
CAST(문자열 AS INTEGER)
*MYSQL
SELECT CAST('1' AS INTEGER) AS NUM;
TO_DATE 문자데이터를 날짜 데이터로 변환 TO_DATE X
DATE_FORMAT 함수 쓸것
NVL() 열또는 데이터를 입력하여 해당데이터가 NULL이 아닐 경우데이터를 그대로 반환하고, NULL인 경우지정한 데이터를 반환. SELECT NVL(COMM,0) FROM EMP;
IFNULL 함수 쓸것
NVL2() 데이터가 NULL이 아닐때 반환데이터를 추가로 지정가능 SELECT NVL2(COMM, '0','X') FORM EMP X
*MYSQL
IFNULL(비교군,'리턴내용')
NULL 일경우 사용자 지정내용 리턴 *MYSQL
SELL IFNULL(NAME,'값이없습니다') FROM TEST
DECODE DECODE([검사대상이 될 열 또는 데이터, 연산이나 함수의 결과],[조건1],[데이터가 조건1과 일치할때 반환결과,
[조건2],[데이터가 조건2와 일치할때 반환할 결과],
.....
[조건N],[데이터가 조건N와 일치할때 반환할 결과]
],
[위조건과 일치한 경우가 없을때 반환할 결과])


IF나 /SWITCH-CASE 조건문과 같은 이
데이터를 조건에부합하는지 비교하고 부합하는 경우 설정한 결과를 반환한다.

SELECT
EMPNO, ENAME, JOB, SAL,
DECODE(
JOB
,'MANAGER', SAL*1.1,
'SALESMAN', SAL*1.1,
'ANALYST', SAL
,SAL* 1.03) 

FROM EMP;
없음 IF나 CASE문 쓸것

ENCODE(문자열,키)
암호화 함수
DECODE(문자열, 키)
복호화 함수

사용 용도가 다름
CASE 조건을 비교하되 각 조건에  사용하는 데이터가 서로 상관없어도 비교가능, 기준데이터값이 같은 데이터외에 다양한 조건을 사용 할 수있다.

CASE [비교할 데이터]
WHEN [조건1]  THEN [조건1 True 반환할 결과]
WHEN [조건2]  THEN [조건2 True 반환할 결과]
WHEN [조건3]  THEN [조건3 True 반환할 결과]
...
WHEN [조건n]  THEN [조건n True 반환할 결과]
ELSE [위조건에 일치하는경우가 없을때 바노한할 경과]
END

SELECT EMPNO, 
CASE JOB
WHEN 'MANAGER' THEN SAL*1.1
WHEN 'SALESMAN' THEN SAL*1.05
ELSE SAL*1.03
END
FROM EMP;
O
* MYSQL

IF문
오라클 함수의 decode함수는 조건과 같을 겨우만 비교하지만 , 조건문을 적어 줄수있다.

IF (조건, 조건이 일치할경우 VALUE, 조건이 일치하지 않을 경우 VALUE)
*MY SQL
SELECT deptno, 
       IF(deptno <= 20,'RESEARCH','OPERATIONS') deptno as "Dept Name"
  FROM dept;
다중행함수
SUM(해당열) 합계 SELECT COUNT(SAL), COUNT(ALL SAL),COUNT(distinct SAL), SUM(SAL), MAX(SAL), MIN(SAL), AVG(SAL) FROM EMP;
COUNT(해당열) 데이터의 갯수를 구해줌
MAX(),MIN() 최대값 , 최소값
AVG() 평균값

 

* DATE FORMAT 참고 : https://leggo.tistory.com/23

 

MYSQL 시간표현 방식, DATE_FORMAT() FORMAT

unit ValueExpected expr Format MICROSECOND MICROSECONDS SECOND SECONDS MINUTE MINUTES HOUR HOURS DAY DAYS WEEK WEEKS MONTH MONTHS QUARTER QUARTERS YEAR YEARS SECOND_MICROSECOND 'SECONDS.MICROSECO..

leggo.tistory.com

728x90
Comments