반응형
--[DUAL]
SELECT DISTINCT 5+10, 6*3 FROM EMP;
SELECT 5+10, 6*3 FROM DUAL;

DESC DUAL; -- DUAL 확인
--[ROUND]
SELECT ROUND(345.678) FROM DUAL; 
SELECT ROUND(345.678, 0) FROM DUAL; 
--346
SELECT ROUND(345.678, 2) FROM DUAL; 
--345.68
SELECT ROUND(345.678, -1) FROM DUAL; 
--350

--ROUND(값, 자리수) => ROUND(날짜, YEAR)
SELECT HIREDATE, ROUND(HIREDATE, 'MONTH') 일수반올림 ,ROUND(HIREDATE, 'YEAR') 월수반올림 FROM EMP WHERE DEPTNO = 10;
--[MOD]
SELECT MOD (34,2), MOD (34, 5), MOD(34,7) FROM DUAL; 
--0 4 6

--사번이 짝수인 사원들의 EMPNO, ENAME, JOB을 출력
SELECT EMPNO, ENAME, JOB FROM EMP WHERE MOD(EMPNO, 2) =0;
--[FLOOR]소숫점 자리수를 무조건 버림(정수자리값만, 반올림x)
SELECT FLOOR (345.678) FROM DUAL; --345
--[CEIL]소수점 자리수를 무조건 버리고 정수자리값 무조건 올림처리
SELECT CEIL (345.118) FROM DUAL; --346
--[SYSTIMESTAMP] 
SELECT SYSTIMESTAMP FROM DUAL; --24/01/15 11:47:04.074000000 +09:00
--[SYSDATE]
SELECT SYSDATE FROM DUAL; --24/01/15
SELECT SYSDATE 오늘 , SYSDATE-1 AS "어제", SYSDATE +1 AS "내일" FROM DUAL; 
--회원정보 테이블에서 10번부서에 해당되는 사람들의 입사한 일차를 구하세요.
SELECT DEPTNO, EMPNO, ENAME, SYSDATE, HIREDATE, ROUND((SYSDATE-HIREDATE)/365) AS "년차" FROM EMP WHERE DEPTNO = 10;
--ROUND(값, 자리수) => ROUND(날짜, YEAR)
SELECT HIREDATE, ROUND(HIREDATE, 'MONTH') 일수반올림 ,ROUND(HIREDATE, 'YEAR') 월수반올림 FROM EMP WHERE DEPTNO = 10;

-[LOWER] [UPPER]
SELECT LOWER(ENAME)소문자로, UPPER ('DataBase') 대문자로, ENAME FROM EMP;


SELECT * FROM EMP WHERE ENAME = UPPER('smith');
SELECT * FROM EMP WHERE LOWER(ENAME) = 'smith';
--[TRUNC] 소숫점기준, 특정 자릿수에서 버림
SELECT TRUNC(234.567, 1), TRUNC(234.567), TRUNC(234.567, -1), TRUNC(234.567, -2) FROM DUAL;


SELECT HIREDATE, TRUNC(HIREDATE, 'MONTH') FROM EMP WHERE DEPTNO = 10;
--[INITCAP] 연결된 단어에 한하여, 첫 글자만 대문자로, 나머지는 소문자로 변환
SELECT INITCAP('DATABASE PROGRAM') FROM DUAL; 
--Database Program
SELECT INITCAP('DATA BASE PROGRAM') FROM DUAL; 
--Data Base Program

SELECT ENAME, INITCAP(ENAME) FROM EMP WHERE DEPTNO = 10;
--[CONCAT] 두 개의 단어만 결합가능, 
SELECT 'Oracle' ||'DataBase' FROM DUAL; 
--OracleDataBase

--필요시 중첩활용
SELECT CONCAT (CONCAT('Oracle',' '),'DataBase') FROM DUAL; 
--Oracle DataBase
--[LENGTH] [LENGTHB] 글자의 개수, 메모리에 차지하는 바이트 수
SELECT LENGTH ('DATA'), LENGTHB('DATA'),
LENGTH ('오라클'), LENGTHB('오라클') FROM DUAL;


SELECT DEPTNO, EMPNO, ENAME, LENGTH(ENAME)
FROM EMP
WHERE DEPTNO = 10;


--사원정보 테이블에서 이름이 4자 이하인 사람의 정보를 출력하세요.
SELECT * FROM EMP WHERE LENGTH(ENAME) <= 4;
--[SUBSTR] 문자열에서 원하는 문자열만큼 추출할 때 사용하는 함수
SELECT SUBSTR ('DataBase', 2, 3) 양수, SUBSTR ('DataBase', -4, 3) 음수 FROM DUAL;


SELECT ENAME, SUBSTR (HIREDATE, 1, 2) FROM EMP WHERE DEPTNO = 20;


SELECT ENAME, HIREDATE FROM EMP WHERE SUBSTR (HIREDATE, 1, 2) = '82';
--[INSTR] 특정 문자의 위치를 반환
SELECT INSTR('DateBase', 'B') FROM DUAL ; 
--5

SELECT DEPTNO, ENAME, INSTR(ENAME, 'E') FROM EMP WHERE DEPTNO = 30;


---1번째 'a'값을 출력하세요.
SELECT INSTR('DataBase', 'a', 3, 1)FROM DUAL; --4
SELECT INSTR('DataBase', 'a', -5, 1)FROM DUAL; --4
--[LPAD] [RPAD] 특정 기호로 채우기
SELECT LPAD('DataBase', 20, '$'), RPAD('DataBase', 20, '$') FROM DUAL;

--해당일자 주문번호 출력시 
SELECT '20240115'||LPAD('1', 3, '0') FROM DUAL;

--[TRIM] 특정문자 잘라내기
SELECT 
LTRIM('aaaaDataBase Programingaaaa', 'a') LTRIM,
RTRIM('aaaaDataBase Programingaaaa', 'a') RTRIM,
TRIM('a' FROM 'aaaaDataBaseaaa Programingaaaa') TRIM
FROM DUAL;

--[TO_CHAR] 해당 값을 문자열로 변환해주는 함수
SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH12:MI:SS AM DAY') FROM DUAL;


SELECT TO_CHAR(SYSDATE, 'AM', 'NLS_DATE_LANGUAGE=AMERICAN') AS AMERICAN, 
    TO_CHAR(SYSDATE, 'AM', 'NLS_DATE_LANGUAGE=KOREAN') AS KOREAN FROM DUAL;

 

 

반응형

+ Recent posts